-1

私はreskitを使用してWebサービスを利用しています。次のコードがあります。

最初の行:Webサービスからトークンを取得します

   tokenID = [self getTokenID]; 

2行目は、同じWebサービスからJSONを取得します

[self sendRequest:tokenID];

しかし、プログラムを実行すると、tokenIDは2行目の準備ができていません...その後、401エラーが発生します(許可されていません)

両方の方法を同期することは可能ですか?例えば:

「getTokenID」メソッドが終了したら、2番目のメソッド「sendRequest:tokenID」を実行します。

よろしく

4

2 に答える 2

1

getTokenID内で非同期呼び出しを使用していると思います。Restkitのドキュメントを見ると、コードに次のようなものが含まれているはずです。

[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation,     RKMappingResult *result) {
 ** CODE TO EXECUTE AFTER THE REQUEST IS FINISHED **
} failure:nil];

そこで、完了ブロックで、結果からトークンを取得して実行できます

[self sendRequest:tokenID];

あいまいで申し訳ありませんが、より適切な回答を得るには、getTokenIDのコードを確認する必要があります。

于 2012-12-12T14:50:07.737 に答える
0

Webサービスが呼び出さないと思い[self getTokenID]ます。表示していない他のコードがリクエストを実行していると思います。リクエストを実行する場合、非同期にすることができます。その場合、必要なときにtokenIDの準備ができていない可能性があります。

したがって、私のアドバイスは次のとおりです。リクエストを実行しているコードを探し、リクエストが終了したときに通知を受けるようにコードにフックする方法を見つけます。デリゲートまたはブロックの形式にすることができます。

于 2012-12-12T14:37:26.677 に答える