我正在崩溃这条消息:
'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
这是我的数据模型:
我想返回“dF”的值,不应该这样称呼它? :
NSString *attributeName = @"dF";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@",attributeName];
答案 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值为>但是如果你想得到正确的值,你就不需要任何谓词。