私は、iOS上で一般的な '属性/キーエディタ'ビュークラスを作成しています。たとえば、[objectForKey isKindOfClass:[NSDate class]]
を使用して編集キーのタイプを確認します。 objectForKey
がnil
の場合、失敗してしまうことがわかったときに壁に突き当たりました。上記のプロパティがnil
であっても、汎用Objective-Cプロパティのクラス/戻り型を取得する方法はありますか?私はObjective-Cランタイムでmethod_getReturnType
について知っていますが、それは私が必要とするもののために過剰なもののように思えます。Objective Cでメソッドの戻り値の型を取得する方法はありますか?
答えて
できません。メソッドの戻り値の型情報が利用可能ですが、オブジェクトを返すメソッドの戻り値の型のエンコーディングは単に "オブジェクト参照"を意味する@
です。
まず、objectForKey!= nilであることを確認してから、isKindOfClassチェックを続行することはできませんか?オブジェクトが最初にnilと等しくないことを確認した場合は、簡単に確認するか、失敗することなく安全に終了することができます。
は、私はあなたのデータはどこから来ているかわからないが、あなたはnsnullをしてnilを取って代わる検討する必要があります、それはあなたが技術的にnullである何かにNSObjectのような特性を得ることができるようになります
しかし、ヌルチェックはお尻の痛みになります。
それは何を求めていることは意味がありません!= [nsnullをヌル]
'[NSNull null]'は 'nilそうです。 –
チェックをたくさんする必要があるなら、いつでも便利なダンディーカテゴリを使うことができます:https://gist.github.com/707337 – mipadi
@peterしかし、少なくとも彼はisKindOfClassをやることができます... ...私はここで微風を撃っています。彼が何を言っているのか誰にもわからない。 –
!= nilの
へ(nsnullを*)対象のオブジェクトからなります。
名前だけではメソッドが識別されないことに注意してください。オブジェクトはそれらのメッセージに応答します(または応答しません)。メソッドはオブジェクト(またはクラス)の一部としてのみ存在します。
オブジェクトを持たない場合は、オブジェクトにメッセージを送信すると仮定して返すことはできません。
ETA:プロパティの属性を編集するにはオブジェクトを編集する必要はありますか?あなたはどこかにバグがあるようです。
私はObjective-Cランタイムで約
method_getReturnType
を知っていますが、これは私が必要とするものが過剰なもののようです。
2つの方法があります。非公式のプロパティ(@property
宣言のないKVC準拠のアクセサメソッド)をサポートしたい場合は、それがまさに必要なものです。正式なプロパティ(@property
)のみを気にする場合は、the property_getAttributes
functionを使用してください。
彼は検査対象のオブジェクトが無名だと言っていませんが、プロパティ値はnilです。 –
Ahruman:もう一度質問を読んで、私はあなたが正しいと思います。 –
アールマンが正しい – refulgentis
- 1. Objective-cでメソッドの戻り値の型をテストする方法
- 2. PHP:メソッドの戻り値の型を取得する方法はありますか?
- 3. "virtual"メソッドの戻り値の型はobjective-c
- 4. PL/SQL:文の戻り値を取得する方法はありますか?
- 5. マクロで関数の戻り値の型を取得する(C++)
- 6. 関数の戻り値の型を取得する方法
- 7. これは、プリミティブ型の値を返すときにrespondsToSelectorメソッドの戻り値型を取得する方法
- 8. C++でオーバーロードされたメソッドの戻り値の型を取得する方法は?
- 9. Objective-C変数をC++メソッドから取り出す方法は?
- 10. C配列の戻り値の型を取得する
- 11. JavaでPredicateの戻り値の型を持つメソッドの値を取得する
- 12. mockito:スタブされたメソッドの戻り値を取得する方法はありますか?
- 13. http postメソッドからの戻り値をAngular2で取得する方法は?
- 14. Java:列挙型で異なる戻り値の型を持つメソッドを取得する方法はありますか?
- 15. メソッドで動的な戻り値の型を返す方法は? C#
- 16. "現在の関数"の戻り値の型を取得する方法はありません
- 17. doWork()メソッドからの戻り値の取得方法
- 18. Task <HttpResponseMessage>の戻り値の型をHttpResponseMessage型に戻す方法はありますか?
- 19. Objective-C - メソッドの戻り値を持たないのはいいですか?
- 20. Java - 戻り値の型でメソッドを呼び出す方法
- 21. AsyncTaskの戻り値の型onPostExecuteメソッドは無効ではありませんか?
- 22. クラス戻り値の型メソッド
- 23. ポップアップウィンドウから戻り値の型を取得する最善の方法JavaFx
- 24. Cで戻り値のないメソッドを定義する方法
- 25. Restletから値と戻り値を取得する方法は?
- 26. メソッドの戻り値の型が正しくありません
- 27. メソッドの戻り値の型がprocessing.jsにありません
- 28. PowerShellのエンジンイベントハンドラから戻り値を取得する方法は?
- 29. python defaultdictメソッドの戻り値を取得
- 30. C++ 11の戻り値と一致する方法はありますか?
非常に真実で、おそらく私は長期的に何をしなければいけないのか、ここには解決策がないのですが、ユーザーが誰もいない場所にオブジェクトを設置できるようにしたいと考えています。たとえば、この場合、私はデータ報告システムを構築しており、最初は開始日と終了日がnilであるため、簡単に[NSDate date]にするのは簡単ですが、柔軟性が欲しいです。 – refulgentis
!= nilなら何もしないのは分かりません。もしあなたが何らかのスーパーリフレクションをしようとしているのでなければ、その場合にはそれらの言語は間違っています。 –