2011-07-21 6 views
1

2つのオブジェクトを持つCoreDataモデルがあります。最初のオブジェクト(Images)にはイメージ名のリストが含まれています。 2番目のオブジェクト(Book)は、imageIdというImagesオブジェクトのフィールドとの関係を持ちます。データ型はint16に設定されており、すべてのブックにイメージがあるわけではないため、省略時の値は0です。CoreDataオプションのリレーションシップとJSONのヌル

私はBookオブジェクトのJSON表現をWCFサービスから要求します。返されるbookオブジェクトの1つは、 "ImageId":その値としてnullを持ちます。したがって、Objective-CでJSONオブジェクトを管理対象オブジェクトに変換すると、次のエラーメッセージが表示されます。

属性の値の許容できない型:property = "imageId";所望のタイプ= NSNumber;与えられた型= NSNull;値=

この変換はどのように処理しますか? nullをチェックして値を0に設定することを考えましたが、これは正しくないようです。

多くのありがとうございます。

* UPDATE * Danielsソリューションを実装する過程で、他のフィールドもnullとしてサービスから返される可能性があることがわかりました。したがって、NSDictionaryカテゴリを変更して、それ自身をトラバースし、nilで任意のインスタンスを置き換えることは可能ですか? jsonKitをJSONパーサーとして使用しています。JSONオブジェクトを表すNSDictionaryオブジェクトを含むNSMutableDictionaryとして解析結果を返すようです。私は多くの日をオブジェクトの修正に費やしましたが、NSDictionariesとして返されるので、それらは不変です。私は単純にサービスを変更し、別のフィールドが返された場合、これは私のアプリを破るだろうかどうかのチェックが必要なすべてのフィールドでDanielsソリューションを使用することができます。代わりに、ダニエルズのソリューションをあらゆる分野で実装することができます

答えて

5

一部のJSONライブラリでは、NSNullを使用するのではなく、JSON nullを単に辞書から省略するようにオプションを設定できます。それを行うと、[theDict objectForKey:@"imageID"]はnilを返すため、動作します。

それ以外の場合は、明示的にNSNullをご覧ください。

+0

ダニエルと私の元の質問への答えを解決しました。しかし、あなたは上記の私の更新に対する答えを知っていたのかと思った。あなたが私の元の質問に正しく答えたので、これを正解と記しました。 – Cragly

関連する問題