我在模拟器和设备上编写了一个使用核心数据的应用程序,并且运行良好。然后,我在项目中创建了一个新的git分支,它可以完美地在模拟器上运行,但不能在设备上运行。
这是fetchedResultsController
的代码
-(NSFetchedResultsController *)fetchedResultsController{
if (_fetchedResultsController != nil) {
NSLog(@"Fetched Controler : %@", _fetchedResultsController);
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Membership" inManagedObjectContext:managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userdata.email == %@", [[NSUserDefaults standardUserDefaults] stringForKey:@"email"]];
NSSortDescriptor *sort1 = [[NSSortDescriptor alloc]initWithKey:@"type" ascending:NO];
NSSortDescriptor *sort2 = [[NSSortDescriptor alloc]initWithKey:@"membership_name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc]initWithObjects:sort1,sort2, nil];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
[fetchRequest setSortDescriptors:sortDescriptors];
_fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"type" cacheName:nil];
return _fetchedResultsController;
}
然后,我获取视图中将出现的对象。
-(void)viewWillAppear:(BOOL)animated{
NSError *error;
[[self fetchedResultsController]performFetch:&error];
[self.tableView reloadData];
}
managed object context
从appDelegate
传递到登录视图,然后从loginView传递到第二个视图。第二种观点是我遇到问题的地方我唯一能想到的是设备内存限制或并发问题正在发生什么?
如果创建了任何线程,我不是故意这样做的。
最佳答案
看来您的谓词
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"userdata.email == %@",
[[NSUserDefaults standardUserDefaults] stringForKey:@"email"]];
返回一个空集。记录该用户默认值,我相信这将被清除。
关于ios - 核心数据获取结果 Controller 仅在设备上返回空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16174488/