件名ごとに、オブジェクトがNSArrayまたはNSDictionaryであるかどうかを確認するにはどうすればよいですか?オブジェクトがNSArrayまたはNSDictionaryであるかどうかをチェック
41
A
答えて
84
if([obj isKindOfClass:[NSArray class]]){
//Is array
}else if([obj isKindOfClass:[NSDictionary class]]){
//is dictionary
}else{
//is something else
}
12
これらの両方がBOOL値を返す必要があります
[myObject isKindOfClass:[NSArray class]]
と
[myObject isKindOfClass:[NSDictionary class]]
を試してみてください。これは、NSObjectの方法の基本的な使用である: In Objective-C, how do I test the object type?
8
あなたはJSONまたはXMLからのデータを解析している場合を考えてみましょう:少し詳しく
-(BOOL)isKindOfClass:(Class)aClass
、ここでこの答えを見ます応答。使用している解析ライブラリによっては、NSArraysまたはNSDictionariesで終わることはありません。代わりに、__NSCFArrayまたは__NSCFDictionaryを持つことができます。念のために
if([unknownObject respondsToSelector:@selector(lastObject)]){
// You can treat unknownObject as an NSArray
}else if([unknownObject respondsToSelector:@selector(allKeys)]){
// You can treat unknown Object as an NSDictionary
}
0
:その場合は
、あなたは配列や辞書を持っているかどうかをチェックするための最良の方法は、それが唯一の配列や辞書に応答するセレクタに応答するかどうかを確認することです誰でもこのパーティーに遅れて来て、スウィフトの同等物を探しています、ここに行きます。
if let arrayVersion = obj as? NSArray {
// arrayVersion is guaranteed to be a non-`nil` NSArray
} else if let dictionaryVersion = obj as? NSDictionary {
// dictionaryVersion is guaranteed to be a non-`nil` NSDictionary
} else {
// it's neither
}
関連する問題
- 1. オブジェクトがあるかどうかをチェック
- 2. NSDictionaryオブジェクトのNSArrayから、ユニークなNSArrayを取得する方法
- 3. NSArrayとNSDictionaryは重複したオブジェクトを追加します
- 4. 数字が - 、+、またはxであるかどうかをチェック
- 5. オブジェクトがnullであるかどうかをチェック
- 6. マングース:オブジェクトがマングースオブジェクトであるかどうかをチェック
- 7. Android - レイアウトにオブジェクトがあるかどうかチェックするには?
- 8. NSArrayに特定のクラスのオブジェクトが含まれているかどうかをチェックする方法は?
- 9. in_arrayはオブジェクトがオブジェクトの配列内にあるかどうかをどのようにチェックしますか?
- 10. JSONオブジェクトがJavaで空であるかどうかをチェックする方法は?
- 11. JSONオブジェクトがPHPで空であるかどうかをチェックする方法は?
- 12. オブジェクトがコンテキストエンティティフレームワーク内にあるかどうかをチェック
- 13. オブジェクトがJavascriptの「サブオブジェクト」であるかどうかをチェックする方法は?
- 14. オブジェクトが「深い空」であるかどうかをチェックする方法は?
- 15. NSArray NSDictionaryは追加オブジェクトの順序を保持します
- 16. オブジェクトが組み込みデータ型であるかどうかをチェックする関数はありますか?
- 17. オブジェクトに機能があるかどうかをチェックする方法は? (DoJo)
- 18. NSPredicateを使用してNSDictionaryオブジェクトのNSArrayをフィルタリングします。
- 19. オブジェクトが未定義/ nullであるかどうかをチェックする方法
- 20. オブジェクトが特定のタイプであるかどうかをチェックする方法
- 21. オブジェクトが文字列のリストであるかどうかをチェックする方法?
- 22. タグページがあるかどうかWordpressチェック
- 23. NSDictionaryのNSArrayをディープコピーする方法は?
- 24. オブジェクトがクエリーセット結果の外部キーであるかどうかをチェック
- 25. NSDictionaryのキーの値がNSStringか別のNSDictionaryかどうかを知るには?
- 26. NSDictionaryの中からNSArrayリストを表示していますか?
- 27. エンコーディング時にNSArrayオブジェクトはどうなりますか?
- 28. NSArray、Plist、NSDictionary、またはデータの保存に関する推奨
- 29. 文字列がNSArrayエントリに含まれているかどうかをチェックする方法は?
- 30. NSDictionaryのNSArrayにXMLを解析する - エラー - なぜですか?
-1多くのオブジェクトが応答することができる:それは同時に所望のタイプにそれらをキャストするだけでなく、それはタイプをチェックしないので、私見、より多くのエレガントなObjective-Cのバージョンよりもですが、それは同じセレクタ、特に 'lastObject'や' allKeys'と同じようなものです。 'isKindOfClass:'を使うことは、 'NSArray'や' NSDictionary'のようなクラスクラスタを扱う際の明確な方法です。 – Calrion
その答えは全然ナンセンスです。 [myObject isKindOfClass:[NSArray class]]は "myObjectがNSArrayであるかのように振る舞いますか"という質問に正しく答えるので、それはあなたが望むものです。 NSArrayまたはNSDictionaryだけが応答するセレクタはありません。 2分で、インスタンスメソッド "allKeys"と "lastObject"でクラスを作成できます。または、NSArrayにカテゴリメソッドとして「allKeys」を追加します。 – gnasher729