在Xcode中,NSFetchRequest只返回Objects,而不返回它们的属性

时间:2011-10-28 13:40:27

标签: ios xcode core-data nsfetchrequest

我有以下代码从核心数据中获取一组'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>

我是否需要单独获取属性或者我错过了什么?感谢。

2 个答案:

答案 0 :(得分:2)

通过获取来查看故障是正常的。故障是替代或“ghost”对象,它们表示对象图中托管对象的位置,而没有加载可能永远不需要的一堆属性数据的开销。

在尝试访问特定托管对象的某个属性之前,您将看不到属性的日志。

在您对托管对象上下文调用save之前,新创建的对象或对现有对象属性的更改不会保存到磁盘。

答案 1 :(得分:1)

data: <fault>仅表示尚未加载尚未的属性。一旦您访问了属性,就会从数据库中检索它。