0

NSManagedContextネストされたコンテキストを介して、1 つから複数に移動しようとしています。

私は私を助けるためにそれらの記事を使用しています:

実際のシステム

[myHTTPClient getPath:path
  parameters:@{access_token & stuff}
  success:^(AFHTTPRequestOperation *operation, id responseObject) {
    for (NSDictionary *dictionary in responseObject)
    {
      // filling the dic in a NSManagedObject
    }
    [myMainContext save:&error];
  }, failure:failureBlock];

指名手配システム

[myHTTPClient getPath:path
  parameters:@{access_token & stuff}
  success:^(AFHTTPRequestOperation *operation, id responseObject) {
    __block NSManagedObjectContext *managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
    __block NSManagedObjectContext *writerObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] writerManagedObjectContext];
    __block NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    temporaryContext.parentContext = managedObjectContext;
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

    [temporaryContext performBlock:^{
      for (NSDictionary *dictionary in responseObject)
      {
        // filling the dic in a NSManagedObject
      }
      [temporaryContext save:&error];
      [managedObjectContext performBlock:^{
        [managedObjectContext save:&error];
        [writerObjectContext performBlock:^{
          [writerObjectContext save:&error];
        }];
      }];
    }];
  }, failure:failureBlock];

ダイアグラム

親コンテキスト図

問題

この方法を使用しているときにデータの保存に問題がありましたが、解決しました ( https://stackoverflow.com/questions/18151827/coredata-writermanagedobjectcontext-freeze-when-saveを参照) 。

ただし、前の質問で述べたように、シミュレーターでは2 倍速くなりますが、デバイスでは5 倍遅くなります。iPod Touch 4thを使ってテストしています。

どうすればそれが可能になり、どうすればそれを改善できますか? 私はこの図を使用することに反対していません:

共有永続ストアの図

しかし、それをコードに統合する方法を知りたいと思っています。

ありがとうございました。

4

0 に答える 0