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

Fin*_*ist 4 iphone core-data objective-c

我正在崩溃这条消息:

'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
Run Code Online (Sandbox Code Playgroud)

这是我的数据模型: 替代文字

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

NSString *attributeName = @"dF";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@",attributeName];
Run Code Online (Sandbox Code Playgroud)

bee*_*fon 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"];
Run Code Online (Sandbox Code Playgroud)

谓词用于获取NSManagedObjects满足您标准的数组.例如,如果你dF是一个数字,你可以创建像" dF > 100" 这样的谓词,然后你的获取请求将返回一个NSManagedObjectsdF值> 100 的数组.但是如果你只想得到值,你就不需要任何谓词.