使用KVC从Core Data检索NSDate对象时出现问题

时间:2014-01-11 17:48:04

标签: objective-c core-data nsdate

我将日期存储在核心数据中作为NSDate对象。当我尝试使用获取请求检索它们时 - (id)valueForKey:我得到一个整数而不是NSDate对象。

NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];    
NSManagedObject *entity = [results lastObject];
NSDate *date = [entity valueForKey:@"updated"];

当我使用点符号如myEntity.updated时,我正确地得到了一个N​​SDate对象,但是当我使用KVC方法时却没有。

我想使用的原因 - (id)valueForKey:是因为我在核心数据中的每个实体上运行此代码,我不想明确定义每个实体。另外,我可以编写一堆if语句来测试isKindOfClass,但这需要很多代码,而且看起来有点像hackish。

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:3)

您不得将托管对象属性调用为“已更新”,与...冲突 isUpdated的{​​{1}}方法。

如果您调用并删除“已删除”属性,则会出现类似问题, 比较Core Data NSPredicate "deleted == NO" does not work as expected进行简短分析。

重命名属性可以解决您的问题。 不幸的是,Xcode没有对此发出警告。