1

MagicalRecord (https://github.com/magicalpanda) を使用しています。

これは機能していませんでした (MOC をマージしていません)

- (void) foo {
    NSBlockOperation * operation = [NSBlockOperation blockOperationWithBlock:^{

        NSManagedObjectContext * localContext = [NSManagedObjectContext MR_contextForCurrentThread];

        // parsing and core data operation on localContext here, savin objectIDs

        [localContext MR_saveNestedContexts];

        [[NSOperationQueue mainQueue] addOperationWithBlock:^(){

            onParseFinished(parsedItemObjectIDs);

        }];

    }];

    [self.operationQueue addOperation:operation];
}

これに置き換える必要がありました(修正を適用しましたhttps://github.com/magicalpanda/MagicalRecord/pull/221

- (void) foo {
    __block NSMutableArray * parsedItemsObjectIDs;
    __block Class parsedItemsClass = [NSObject class]; 

    [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext){

        // parsing and core data operation on localContext here, savin objectIDs
        ...

    } completion:^(void){

        onParseFinished(parsedItemsObjectIDs);

    }];

}

最初の問題は何ですか?なぜ機能せず、変更がマージされなかったのですか?

4

1 に答える 1

0

変更をマージしないという単純な事実は、私の時間が限られているということです。私は入ってくるすべてのプルリクエストを理解して検証しようとしています。一人の店であるということは、オープンソース(無料、無料、無料)の仕事のための私の時間が最近より制限されていることを意味します。ただし、修正は最終的に組み込まれたと思います。コミット履歴からは明らかではありませんでした。

そもそも機能しなかった理由については、contextForCurrentThreadメソッドが役に立たなかったものを返したというのが私の勘です。saveInBackgroundは、呼び出されるたびに新しいコンテキストを作成して、新しい作業領域を提供します。これが私が信じる主な違いです。

于 2012-08-03T06:09:16.320 に答える