0

我编写了一个使用核心数据的应用程序,它在模拟器和设备上都运行良好。然后我创建了一个新的项目 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 传递到第二个视图。第二种观点是我遇到问题的地方

我能想到的唯一一件事是设备上的内存限制或可能是并发问题发生了一些事情?
如果创建了任何线程,我不是故意的。

4

1 回答 1

1

看来你的谓词

NSPredicate *predicate = 
   [NSPredicate predicateWithFormat:@"userdata.email == %@",    
   [[NSUserDefaults standardUserDefaults] stringForKey:@"email"]];

正在返回一个空集。记录此用户默认值,我相信这将被清除。

于 2013-04-24T07:15:35.100 回答