我将日期存储在核心数据中作为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时,我正确地得到了一个NSDate对象,但是当我使用KVC方法时却没有。
我想使用的原因 - (id)valueForKey:是因为我在核心数据中的每个实体上运行此代码,我不想明确定义每个实体。另外,我可以编写一堆if语句来测试isKindOfClass,但这需要很多代码,而且看起来有点像hackish。
我们非常感谢任何建议。
答案 0 :(得分:3)
您不得将托管对象属性调用为“已更新”,与...冲突
isUpdated
的{{1}}方法。
如果您调用并删除“已删除”属性,则会出现类似问题, 比较Core Data NSPredicate "deleted == NO" does not work as expected进行简短分析。
重命名属性可以解决您的问题。 不幸的是,Xcode没有对此发出警告。