問題のメソッド(実際には多態的に実装された再帰的検索メソッドファミリ)は、特定のタイプのオブジェクトへのポインタを返します。私は失敗の場合には何も返さなかった。今私は2つの異なる種類の失敗をしたいと思います。それを実装する最も簡単な方法は何ですか?メソッドから2つの異なる "nil-like"可能な戻り値を持つ便利な方法はありますか?
1
A
答えて
7
これを行う最良の方法は、return nil;
を保持することですが、関数の引数の1つとしてエラーポインタを使用します。このようにして、エラーを送信し、その後に値をチェックして何が起きたかを確認することができます。あなたの関数は引き続き実行されますが、返されるものを何らかの方法で制御することができます。一例として、
、ここで私はmanagedObjectContextを保存するために使用するいくつかのコードがあります:
NSManagedObjectContext *moc = [self managedObjectContext];
NSError *error;
if (![moc save:&error]) {
NSString *description = [error localizeDescription];
NSInteger code = [error code];
}
私はエラーのうち、情報をプルするいくつかの方法を示すために、ブロックの内部を微調整しました。あなたにとっては、異なるゼロ値を区別するために単純なエラーコードを使用するのが最善でしょう。 (エラーメッセージを解釈するためのコードを複製する必要がありますように、しかしおそらくない最良の方法)
は、ここでは、コードの例です:
-(id) functionCall:(NSError *)error {
...
if (nilCondition) {
if (firstNilCondition) {
[error setCode:1];
}
if (firstNilCondition) {
[error setCode:2];
}
return nil;
}
}
関連する問題
- 1. ラベルとテキストフィールドを持つ再利用可能なUITableViewCellはありますか?
- 2. ASP.NET MVCに便利なアクションサマリー拡張メソッドはありますか?
- 3. メソッド名は同じで戻り値の異なる2つのJavaインターフェイス
- 4. NSIndexPathオブジェクトを作成するより便利な方法はありますか?
- 5. JavaFX:なぜ2つの異なるスタイルがありますか?
- 6. メソッドは異なる型の複数の戻り値を持つことはできますか?要するに
- 7. 異なる戻り値の型を持つ列挙型Func
- 8. メソッドから2つの異なる値を返す
- 9. 一般的な戻り値を持つ汎用メソッドの形式
- 10. PHPunit:パラメータと戻り値を持つメソッドをモックする方法
- 11. SqlBulkCopy - 小さなデータセット(つまり1000行)に便利ですか?
- 12. マップで可能な値の1つを取得する慣習的な方法はありますか?
- 13. oracleをhssqlにエクスポートする便利なショートカット方法はありますか?
- 14. モジュール(ライブラリ)をPythonプロジェクトにインポートする便利な方法はありますか?
- 15. xe:objectDataについて利用可能なドキュメントはありますか?
- 16. 2つの異なる文字列のMD5が同一である可能性はありますか?
- 17. ドッキング可能なコントロールのちらつきを除去するエレガントな方法はありますか?
- 18. 1つのRails 3.xアプリケーションで2つの異なるキャッシュストアを使用する方法はありますか?
- 19. C用の便利なORMライブラリフレームワークはありますか?
- 20. シンプルだが便利なjquery.JsPlumbの例はありますか?
- 21. いくつかのメソッドを2つの異なるクラスにしか見えないようにする方法はありますか?
- 22. iframeのセッションが異なる可能性はありますか?
- 23. 異なる戻り値
- 24. registerForContexMenuは2つの異なるリストにあります。
- 25. 異なる国のアプリ名が異なる可能性がありますか?
- 26. Javaで利用可能なSMS Pduパーサーはありますか?
- 27. Python - 利用可能なグラフデジタイザはありますか?
- 28. 利用可能なGIS APIはありますか?
- 29. アンドロイドで利用可能なデータグリッドコントロールはありますか?
- 30. 2つの異なる値
+1これは確かに最良の方法です。 Appleの接続関連の方法のほとんどは、たとえば "stringWithContentsOfURL:encoding:error"のようにこれを使用します。 –
すべての私の呼び出しに余分な議論を含める必要があることを迷惑に思う。しかし、明らかにこれの周りに良い方法はありません。 –
ええ、wordinessは間違いなくObjective-Cの作成者と位相を合わせません。これは質問に答えましたか? –