件名ごとに、オブジェクトが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. NSDictionaryオブジェクトのNSArrayから、ユニークなNSArrayを取得する方法
- 2. オブジェクトがあるかどうかをチェック
- 3. NSArrayとNSDictionaryは重複したオブジェクトを追加します
- 4. 数字が - 、+、またはxであるかどうかをチェック
- 5. オブジェクトがクエリセットであるかどうかをチェック
- 6. オブジェクトがnullであるかどうかをチェック
- 7. マングース:オブジェクトがマングースオブジェクトであるかどうかをチェック
- 8. Android - レイアウトにオブジェクトがあるかどうかチェックするには?
- 9. NSDictionary to ordered NSArray
- 10. NSArrayに特定のクラスのオブジェクトが含まれているかどうかをチェックする方法は?
- 11. NSArray NSDictionaryは追加オブジェクトの順序を保持します
- 12. オブジェクトがオブジェクトの配列であるかどうかをチェックする方法
- 13. in_arrayはオブジェクトがオブジェクトの配列内にあるかどうかをどのようにチェックしますか?
- 14. JSONオブジェクトがJavaで空であるかどうかをチェックする方法は?
- 15. JSONオブジェクトがPHPで空であるかどうかをチェックする方法は?
- 16. オブジェクトがコンテキストエンティティフレームワーク内にあるかどうかをチェック
- 17. vars(オブジェクト)が辞書型であるかどうかをチェックする方法は?
- 18. オブジェクトがVueコンポーネントであるかどうかをチェックする方法は?
- 19. スパン内のオブジェクトが空であるかどうかをチェックする方法は?
- 20. オブジェクトがJavascriptの「サブオブジェクト」であるかどうかをチェックする方法は?
- 21. オブジェクトが「深い空」であるかどうかをチェックする方法は?
- 22. オブジェクトがTypeErrorかどうかをチェック
- 23. NSPredicateを使用してNSDictionaryオブジェクトのNSArrayをフィルタリングします。
- 24. 文字列にNsdictionaryのNSArrayの値が含まれているかどうかを調べる
- 25. NSDictionaryのNSArrayをディープコピーする方法は?
- 26. オブジェクトが組み込みデータ型であるかどうかをチェックする関数はありますか?
- 27. divが空であるかどうかをチェックする前または:after
- 28. DjangoオブジェクトがjavascriptでNoneであるかどうかをチェックする方法?
- 29. NSDictionaryのキーの値がNSStringか別のNSDictionaryかどうかを知るには?
- 30. NSDictionaryの中からNSArrayリストを表示していますか?
-1多くのオブジェクトが応答することができる:それは同時に所望のタイプにそれらをキャストするだけでなく、それはタイプをチェックしないので、私見、より多くのエレガントなObjective-Cのバージョンよりもですが、それは同じセレクタ、特に 'lastObject'や' allKeys'と同じようなものです。 'isKindOfClass:'を使うことは、 'NSArray'や' NSDictionary'のようなクラスクラスタを扱う際の明確な方法です。 – Calrion
その答えは全然ナンセンスです。 [myObject isKindOfClass:[NSArray class]]は "myObjectがNSArrayであるかのように振る舞いますか"という質問に正しく答えるので、それはあなたが望むものです。 NSArrayまたはNSDictionaryだけが応答するセレクタはありません。 2分で、インスタンスメソッド "allKeys"と "lastObject"でクラスを作成できます。または、NSArrayにカテゴリメソッドとして「allKeys」を追加します。 – gnasher729