我正在尝试在下面的代码中获取 stateName 并将其显示在标签中。但它总是返回错误。
-(NSArray *) getStateNameFromCode :(NSString *) stateCode
{
NSManagedObjectContext *objectContext = [self managedObjectContext ];
NSEntityDescription *entity = [NSEntityDescription entityForName:ENTITY_STATES inManagedObjectContext:objectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K == %@", COLUMN_STATE_CODE, stateCode];
NSLog(@"Predicate : %@" ,predicate);
NSFetchRequest *fetchRequest = [[ NSFetchRequest alloc]init];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
NSArray *stateName = [objectContext executeFetchRequest:fetchRequest error:Nil];
if (stateName.count > 0)
{
return [stateName objectAtIndex:0];
}
return nil ;
}
self.labelTeams.text = [NSString stringWithFormat:@"%@\n" ,
[sharedController getStateNameFromCode:_checklist.stateHomeTeam]]
;
输出:
<States: 0xa571560> (entity: States; id: 0xa565300 <x-coredata://D6B54D51-4556-41E1-A372-F39EB871A076/States/p8> ; data: <fault>)
尝试使用 setreturnsobjectsasfaults=NO 但这不起作用。发现了很多链接,大多数都说使用 setreturnsobjectsasfaults 。我杀了我的布赖恩。 任何想法将不胜感激。
问候,
最佳答案
试试这个,
//return state name as NSString (assumes state name is string type)
-(NSString *) getStateNameFromCode :(NSString *) stateCode
{
....
NSArray *states = [objectContext executeFetchRequest:fetchRequest error:Nil];
if (states.count > 0)
{
//Matched state object
NSManagedObject *state = [states objectAtIndex:0];
//or States *state = [states objectAtIndex:0];, if States is the NSManagedObject subclass name
return //return name of state from state object, like state.name
}
return nil ;
}
self.labelTeams.text = [NSString stringWithFormat:@"%@\n" ,
[sharedController getStateNameFromCode:_checklist.stateHomeTeam]]
;
关于ios - NSFetchRequest 从 Core Data iOS 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655486/