次のように Core データからテーブル ビューを更新しようとしています。
dispatch_queue_t request_queue = dispatch_queue_create("com.myqueue.qu", NULL);
dispatch_async(request_queue, ^{
NSManagedObjectContext *parent = [[CoreDataManager instance] managedObjectContext];
NSManagedObjectContext *searchContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:parent.concurrencyType];
[searchContext setPersistentStoreCoordinator:[[CoreDataManager instance] persistentStoreCoordinator]];
NSArray * array = ...// receive array from CoreData, just select, there is no changes
if (array.count > 0) {
dispatch_async(dispatch_get_main_queue(), ^{
block(array);
});
}
else {
dispatch_async(dispatch_get_main_queue(), ^{
block(nil);
});
}
});
dispatch_release(request_queue);
ブロックで私は:
_tableViewData = [array mutableCopy];
[self.tableView reloadData];
しかし、次の場合:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
私のオブジェクト:
MyObj *obj = _tableViewData[indexPath.row];
nil フィールドあり。したがって、obj は空です。
編集:
「searchContext」を作成せずに検索しようとしましたが、parentContext と tableView を使用して正常に更新されましたが、正しい方法ですか?
dispatch_queue_t request_queue = dispatch_queue_create("com.myqueue.qu", NULL);
dispatch_async(request_queue, ^{
NSManagedObjectContext *parent = [[CoreDataManager instance] managedObjectContext];
NSArray * array = ...// receive array from CoreData, using parent as search context
...