全部,我遇到Core Data问题。
我有一个查询与jobId
匹配的所有数据的方法- (JobSummary*)summaryForJobId:(NSInteger)jobId {
NSFetchRequest* request = [[NSFetchRequest alloc] initWithEntityName:[JobSummary entityName]];
request.predicate = [NSPredicate predicateWithFormat:@"jobId = %D", jobId];
JobSummary* summary = [[self.context executeFetchRequest:request error:nil] lastObject];
NSLog(@"DB Summary: %@", summary);
[request setReturnsObjectsAsFaults:NO];
return summary;
}
当被呼叫并且我退出时,它工作得很完美,但是当我从一个单独的视图控制器中调用它时是这样的;
JobSummary *retrievedDictionary = [[FSScheduleDatabaseTransaction new] summaryForJobId:jobid];
当我退出retrieveDictionary时,它会吐出这个;
<JobSummary: 0x12de24a0> (entity: JobSummary; id: 0xb3c19b0 <x-coredata://7E9F6C6E-B4A0-4450-8905-184C6C8FB60D/JobSummary/p169> ; data: <fault>)
非常感谢任何帮助!
答案 0 :(得分:0)
正确地为您提供日志。当您尝试打印ManagedObject
时,您只会在日志中看到fault
。
fault是一个占位符对象,表示尚未完全实现的托管对象,或者是表示关系的集合对象:
托管对象错误是相应类的实例,但其持久变量尚未初始化。
关系错误是表示关系的集合类的子类。
因此,简而言之,除非您尝试访问这些属性,否则CoreData不会填充属性值。它将有一个fault
。只是尝试记录ManagedObject
,而不先前访问其属性,只会显示fault
。