0

我在 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 在这个方法之后给了我一个警告:“控制到达非无效函数的结尾”

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

4

1 回答 1

1

“名称”是否与您的 .xcdatamodel 文件中的实体类完全匹配 - 而不是您想要的实体属性?您是否在应用程序委托中检查设置方法是否正确完成?你检查过 managedObjectContext != nil 吗?您是否编辑过 .xcdatamodel 文件?如果您在上次运行程序后已经这样做了,您需要从模拟器的 Documents 目录中为您的应用程序删除数据文件,或者您需要为您的数据模型添加模型版本。

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

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

于 2009-10-23T07:00:41.217 回答