iPhone开发:你如何打印核心数据fetchRequest的结果?

时间:2009-10-23 03:39:26

标签: iphone core-data fetch

我在Core Data Recipes示例中将以下内容添加到AppDelegate中,但我在控制台中没有得到任何打印结果......有什么想法吗?

#pragma mark -
#pragma mark TESTING RETRIEVAL OF RECIPE NAMES

- (NSArray *)allRecipes{
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:self.managedObjectContext];
    [request setEntity:entity];

    NSArray *result = [[NSArray alloc] init];
    result = [self.managedObjectContext executeFetchRequest:request error:NULL];    

    NSManagedObject *firstObject = [result objectAtIndex:0];
    NSLog(@"firstObject.name: %@", [firstObject valueForKey:@"name"]);

    }

XCode在这个方法后给我一个警告:“控制到达非空函数的结束”

我认为这意味着我没有得到任何结果......这很明显,因为什么都没有打印。

1 个答案:

答案 0 :(得分:1)

在您的.xcdatamodel文件中,“name”是否与实体的类完全匹配 - 不是您希望从实体获取的属性? 您是否在应用程序委托中检查安装方法是否正在完成而没有错误? 你检查过managedObjectContext!= nil? 你编辑过.xcdatamodel文件了吗?如果您自上次运行程序以来已经这样做,则需要从模拟器的Documents目录中删除数据文件,或者需要为数据模型添加模型版本。

正如gerry3所说,你的第一个问题是该函数指定你必须返回一个数组并且你不返回任何东西。

另一个问题是你获取类“name”的属性,然后再次使用“name”作为valueForKey。你真的有一个带有“name”属性的实体“name”吗?更有可能的是,您的实体被命名为其他名称,name是其属性 - 在这种情况下,您需要更改NSEntityDescription方法entityForName:argument。