0

RestKit を使用して JSON をローカル データベースに同期していますが、日付の保存に問題がありますCategory is not key value coding-compliant for the key "createdAt".。リモート Web サービスから取得した JSON は文字列で、次のようになります。

"created_at":"2012-06-20T13:29:54Z" 

私のローカルxdatamodeldファイルではcreated_at、データ型として NSSTring と NSdate の両方を試した属性を持たせようとしました。created_at @property: を持つエンティティのローカル モデル ファイルがあります@property (nonatomic, retain) NSDate *createdAt;。ここでも NSString と NSDate の両方を試しました。の日付フォーマッタも作成しようとしましたRKManagedObjectMappingが、どちらも役に立ちませんでした。このような:

NSDateFormatter* dateFormatter = [NSDateFormatter new];
[dateFormatter  setDateFormat:@"yyyy-MM-dd"];

categoryMapping.dateFormatters = [NSArray arrayWithObject: dateFormatter]; 

私のマッピングは次のようになります。

[categoryMapping mapKeyPath:@"categories.created_at" toAttribute:@"createdAt"];

私が間違っていることについてのアイデアはありますか?

** アップデート **

Zがエラーを引き起こしていると思われます。マッピングする前に、リクエストからそれを取り除くにはどうすればよいですか?

**更新#2 **

新しい addDefaultDateFormatter も追加しようとしましたが、うまくいきませんでした。このように (独自のマッピングを作成する前に):

// JSON date format: 2012-06-20T13:29:54Z 
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

[RKObjectMapping addDefaultDateFormatterForString:@"yyyy-MM-dd'T'HH:mm:ssZ" inTimeZone:nil];
[RKObjectMapping addDefaultDateFormatter:dateFormatter]; 
4

1 に答える 1

2

2つのこと。

1) あなたが報告するエラーは、日付の書式設定とは関係ありません。単に、このエンティティに createdAt という名前のプロパティ/属性がないことを示しています。マップが正しいオブジェクトにマッピングされていること、およびオブジェクトが実際に正しいプロパティを持っていることを確認してください。

2) 日付フォーマッタが間違っています。次の形式にする必要があります。

yyyy-MM-dd'T'HH:mm:ss'Z'

ただし、これはすでに RestKit のデフォルトの日付フォーマッタの 1 つであるため、指定する必要はありません。ちなみに、これはISO8601形式です(つまり、標準日付)。

于 2012-06-22T06:44:40.227 に答える