0

私のアプリは、バックグラウンド キューでソケット接続を処理します。接続キューから呼び出されるヘルパー クラス内で、検証 (フェッチ要求) を実行するためにコア データにアクセスする必要があります。メイン キューでコア データ フェッチを実行し、値を接続キューに渡すにはどうすればよいですか?

コードは次のとおりです。

       -(void)getIsFavourite {
    //Execute the following codes in Main thread
            id <CHFavouriteUserDao>dao =[CHServiceRepository findService:@protocol(CHFavouriteUserDao)];
//findFavouriteUserByName will execute a fetch request and return a NSManagedObject
                FavouriteUser *user =  [dao findFavouriteUserByName:self.uniqueIdentifier];

    //Switch back to the background queue
                if (user!= nil) {
                    [self setIsFavourite:YES];
                }
  1. を試してみましたperformSelectorOnMainThread:withObject:waitUntilDone:YES。ただし、ソケットの実行をメイン キューに移動し、アプリをフリーズします。
  2. でdispatch_asyncを試しましdispatch_get_main_queue()たが、ソケット接続が実行されているバックグラウンドキューにどのようにアクセスできるかが問題です(dispatch_get_current_queue非推奨です。
4

1 に答える 1

0

NSOperationQueue を使用しようとしましたか? 使用できます

[NSOperationQueue currentQueue]

[NSOperationQueue mainQueue]

および NSOperationQueue メソッド – addOperations:waitUntilFinished: 操作の終了を待機します。

于 2014-01-10T14:11:54.980 に答える