在iCloud更新后重新加载核心数据UITableView

时间:2013-12-28 17:59:24

标签: ios iphone objective-c uitableview core-data

我目前正在使用iCloud在设备之间同步Core Data。设备之间的数据同步正在运行,但重新加载包含数据的UITableView数据的调用有问题。这是我的代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(pushListLearn:)
                                             name:@"receivedLocalNotification"
                                           object:nil];

- (void)reloadFetchedResults:(NSNotification*)note {
    NSLog(@"Underlying data changed ... refreshing!");
    [self.fetchedResultsController performFetch:nil];
}

如果我单独更新设备,UITableView会成功更新新数据。但是,如果另一台设备在主设备打开并滚动(重新加载单个单元格数据)时删除另一台设备上的对象,我的应用程序会崩溃并显示以下内容:

  

[__ NSArrayI objectAtIndex:]:索引0超出空数组的界限

如果您需要,我的UITableView配置如下:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][0];
    return [sectionInfo numberOfObjects];
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

我需要添加到以下方法中的是在获取后直接重新加载UITableView

- (void)reloadFetchedResults:(NSNotification*)note {
    NSLog(@"Underlying data changed ... refreshing!");
    [self.fetchedResultsController performFetch:nil];
    [self.tableView reloadData];
}