0

次のように 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

...

4

1 に答える 1