1

そのため、NSDate プロパティを持つオブジェクトに遭遇するまで、JSON と setValuesForKeysWithDictionary を使用して喜んでシステムにデータを叩きつけています。

JSON には、次の形式の日付が含まれています。

BackOrderDate: "2011-03-15T00:00:00"

これは私にエラーを与えます:

'NSInvalidArgumentException', reason: 'Unacceptable type of value for attribute: property = "BackOrderDate"; desired type = NSDate; given type = __NSCFString; value = 2011-03-15T00:00:00

MVC で JSON.NET を使用し、次の設定を使用しています。

JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter());
string json = JsonConvert.SerializeObject(objects, Formatting.None, serializerSettings);
return Content(json);

この問題に対処する方法についてのアイデアはありますか? 私は setValuesForKeysWithDictionary の使用を失いたくありません。

4

1 に答える 1

1

Core Dataを使用していて(Core Dataは投稿したエラーを生成するため)、エンティティには「Date」タイプの「BackOrderDate」という名前のプロパティがあると想定しています。

問題は、JSONに「日付」データ型がないことです。.NETコードでは、日付をIS形式の文字列に変換するようにJSONシリアル化を指示することでこれを処理しました。

iOSアプリでJSONデータを解析するときは、データをに渡す前に、逆の変換を実行する必要がありますsetValuesForKeysWithDictionary:

NSDateを使用して文字列を解析することができNSDateFormatter、Web上でその例を簡単に見つけることができます。

呼び出す前に解析を実行する方法はsetValuesForKeysWithDictionary:、JSONの解析を使用しているものによって異なります。

Appleを使用しNSJSONSerializationている場合は、おそらくこのNSJSONReadingMutableContainersオプションを使用する必要があります。NSDate次に、辞書に移動し、を呼び出す前に日付文字列をオブジェクトに置き換えますsetValuesForKeysWithDictionary:

他のJSONパーサー(SBJSONなど)を使用している場合、置換を行うための最良の方法がわかりません。

于 2012-08-06T21:47:31.697 に答える