1

アーキテクチャに少し問題があります。サーバーからのデータに基づいて配列を返すメソッドがあります。

NSArray *myStuff = [anObject getMyStuff];

明らかに、サーバーに障害が発生する可能性があります。これに対応するための最良の方法は何ですか?私はどのようにperformFetch:機能するかを見ていましたが、それはBOOLリターンタイプとしてあります。私は持つことができます:

NSArray *myStuff = [anObject getMyStuff:&anError];
4

2 に答える 2

4

簡単に言えば、それはあなた次第です

一部の Cocoa クラスは、説明したエラーへの単純なポインター オブジェクトを使用します。サーバーからデータをロードしている場合は、非同期データを処理する、より複雑な要求/応答システムを検討することをお勧めします。

または、非常に単純な解決策を探しているnil場合は、リクエストが失敗したときに戻るだけです。

于 2012-05-28T16:04:00.793 に答える
3

e.Jamesが以前に提案したように、適切な非同期処理を行う必要があります。フェッチを実行するオブジェクトは、成功した場合はメソッドを呼び出し、失敗した場合は別のメソッドを呼び出します。
人気のあるAFNetworkingで使用されている、これの変形があります: メソッドに 2 つのブロックを渡します。1 つは失敗の場合、もう 1 つは成功の場合です。

これは次のようになります。

[client shopsFeedForUserWithID:2 
                       success:^(id response) {
                           blockSelf.shops = [Shop shopsFromReponseDict:response];
                           [blockSelf.tableView reloadData];
                      } failure:^(NSError *error) {
                           //handle the error
                      }]; 
于 2012-05-28T16:23:39.547 に答える