核心数据:在实体中找不到Keypath名称

时间:2010-09-15 11:29:15

标签: iphone objective-c core-data

我正在崩溃这条消息:

'NSInvalidArgumentException',原因:'在实体中找不到密钥路径名

很明显,我并没有正确地查询我的实体。

//fetching Data

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Viewer" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSString *attributeName = @"dF";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@",attributeName];
[fetchRequest setPredicate:predicate];

NSLog(@"predicate : %@",predicate);
NSError *error;
NSArray *items = [context executeFetchRequest:fetchRequest error:&error];
NSLog(@"items : %@",items);

[fetchRequest release];

//end of fetch

这是我的数据模型: alt text

我想返回“dF”的值,不应该这样称呼它? :

NSString *attributeName = @"dF";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@",attributeName];

1 个答案:

答案 0 :(得分:7)

如果您想从dF媒体资源中获取价值,则必须获取NSManagedObjects数组,然后使用[fetchedManagedObject valueForKey:@"dF"];获取您的价值。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Viewer" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *items = [context executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];

NSManagedObject *mo = [items objectAtIndex:0];  // assuming that array is not empty
id value = [mo valueForKey:@"dF"];

谓词用于获取满足您条件的NSManagedObjects数组。例如。如果您的dF是一个数字,则可以创建谓词“dF > 100”,然后您的获取请求将返回一个NSManagedObjects的数组,该数组的dF值为>但是如果你想得到正确的值,你就不需要任何谓词。