我正在使用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];
答案 0 :(得分:2)
两件事。
1)您报告的错误与日期格式无关,它只是说该实体没有名为createdAt的属性/属性。检查您的地图是否映射到正确的对象,并且您的对象实际上具有正确的属性。
2)您的日期格式化程序错误。它的格式应为:
yyyy-MM-dd'T'HH:mm:ss'Z'
但这已经是RestKit的默认日期格式化程序之一,因此您不需要指定它。顺便说一下,这是ISO8601格式(即:标准日期)。