我有以下代码从核心数据中获取一组'Projects'(每个'Project'都有一些属性,例如'title','time','endTime','pay'等):< / p>
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:__managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"endTime" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[__managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
}
[self setEventsArray:mutableFetchResults];
但是,只返回项目而不是其属性:<NSManagedObject: 0x154010> (entity: Project; id: 0x1dad70 <x-coredata://85BD9DF1-B41B-4234-8397-C2F568D0CC7A/Project/p3> ; data: <fault>
我是否需要单独获取属性或者我错过了什么?感谢。
答案 0 :(得分:2)
通过获取来查看故障是正常的。故障是替代或“ghost”对象,它们表示对象图中托管对象的位置,而没有加载可能永远不需要的一堆属性数据的开销。
在尝试访问特定托管对象的某个属性之前,您将看不到属性的日志。
在您对托管对象上下文调用save之前,新创建的对象或对现有对象属性的更改不会保存到磁盘。
答案 1 :(得分:1)
data: <fault>
仅表示尚未加载尚未的属性。一旦您访问了属性,就会从数据库中检索它。