0

Core-Data ストアからのデータを表示する必要があるビュー コントローラーがいくつかあります。

それぞれが同じコンテキストから管理対象オブジェクトをフェッチしますが、複数回 VC がフェッチを行うと、何らかの理由で管理対象オブジェクトの数が増加しますか?

managedObjects を同じコンテキスト内で共有できず、ポインター参照のみを共有できますか?

ビュー コントローラが同じデータを要求すると、管理対象オブジェクトの数が増えるのはなぜですか?

コード:

- (void) updateCacheWithObject:(Object *)object
{

[self.coreDataSaveQueue addOperationWithBlock:^{

    NSManagedObjectContext *saveContext = [[NSManagedObjectContext alloc] init];
    [saveContext setPersistentStoreCoordinator:[self persistentStoreCoordinator]];

    AudioObject *object = [NSEntityDescription
                             insertNewObjectForEntityForName:@"object"
                             inManagedObjectContext:saveContext];

    [audioObject setValue:object.localPath forKey:@"localPath"];
    [audioObject setValue:object.title forKey:@"title"];
    [audioObject setValue:object.data forKey:@"data"];

    NSError *error;

    // does the psc have a store
    if ([saveContext.persistentStoreCoordinator.persistentStores count] == 0) {
        [saveContext setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
    }

    if (![saveContext save:&error])
    {
        NSLog(@"Couldn't save: %@", [error localizedDescription]);
        NSLog(@"Error user info dictionary is %@", [error userInfo]);
    }
}
4

1 に答える 1

0

あなたが示したのはフェッチではありません。それは挿入物です(具体的にはinsertNewObjectForEntityForName:inManagedObjectContext:)。ご希望のクラスはNSFetchRequest.

また、何らかの理由で、saveContext の PSC に self.persistentStoreCoordinator を 2 回割り当てていることもわかります。1 回は 7 行目で、もう 1 回は下から約 10 行です。

于 2013-03-27T00:05:11.223 に答える