Konuya göre, bir nesnenin NSArray veya NSDictionary olup olmadığını nasıl kontrol edebilirim?Nesnenin bir NSArray veya NSDictionary olup olmadığını kontrol edin
41
A
cevap
84
if([obj isKindOfClass:[NSArray class]]){
//Is array
}else if([obj isKindOfClass:[NSDictionary class]]){
//is dictionary
}else{
//is something else
}
12
BOOL değerlerini dönmelidir
[myObject isKindOfClass:[NSDictionary class]]
Bunların her ikisi de
[myObject isKindOfClass:[NSArray class]]
ve
deneyin. Bu NSObject yöntemin temel kullanımıdır: In Objective-C, how do I test the object type?
8
Bir JSON veya XML veri ayrıştırma ediyoruz durum düşünün: Biraz fazla bilgi için
-(BOOL)isKindOfClass:(Class)aClass
, burada bu cevaba bakınız tepki. Kullandığınız ayrıştırma kitaplığına bağlı olarak, NSArrays veya NSDictionaries ile bitmeyebilir. Bunun yerine __NSCFArray veya __NSCFDictionary olabilir. Her ihtimale karşı
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
: Bir dizi varsa veya bir sözlük sadece bir dizi veya sözlük yanıt vereceğini bir seçicinin o yanıt verip kontrol etmek olup olmadığına Bu durumda
, en iyi yolu kontrol etmek Herkes bu partiye Swift eşdeğerini arıyor geç geliyor, işte gidiyorsun. sadece o türlerini kontrol etmez, çünkü çok daha şık Objective-C sürümü, IMHO daha, ama aynı anda istenen türüne onları atmalarını: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
}
İlgili konular
- 1. Bir nesnenin boş olup olmadığını kontrol edin
- 2. Nesnenin nesne listesinde olup olmadığını kontrol edin
- 3. Nesnenin NSArray içinde olup olmadığını nasıl anlarsınız?
- 4. VBA Microsoft Access ile - Nesnenin var olup olmadığını kontrol edin
- 5. Yalancı olup olmadığını kontrol edin
- 6. Değerin yinelenebilir olup olmadığını kontrol edin vba
- 7. Türün bir arabirim olup olmadığını kontrol edin
- 8. Bir sayfanın açık olup olmadığını kontrol edin
- 9. Listenin bir türü olup olmadığını kontrol edin?
- 10. Dize bir sayı olup olmadığını kontrol edin
- 11. Bir HTML giriş elemanının boş olup olmadığını kontrol edin veya
- 12. Bir yolun mutlak veya göreli olup olmadığını kontrol edin
- 13. Nesnenin aynı türde olup olmadığını kontrol etme
- 14. Dizgede özel karakterler (/ * - + _ @ & $ #%) olup olmadığını kontrol edin?
- 15. Tablonun var olup olmadığını kontrol edin C#
- 16. Görüntülerin yüklü olup olmadığını kontrol edin?
- 17. Ruby websocket Kullanıcının olup olmadığını kontrol edin
- 18. Öğenin selenyumda tıklanabilir olup olmadığını kontrol edin
- 19. Rest API'da kayıt olup olmadığını kontrol edin.
- 20. Yolun ağda olup olmadığını kontrol edin
- 21. FinderSync uzantısı seçili olup olmadığını kontrol edin
- 22. Öğenin animasyonlu olup olmadığını kontrol edin CSS3
- 23. İmlecin sonuçları olup olmadığını kontrol edin
- 24. Java'da ResultSet boş olup olmadığını kontrol edin
- 25. İşlev C veya Lua uygulanmış olup olmadığını kontrol edin
- 26. Java'da sürekli değişiklik olup olmadığını kontrol edin?
- 27. javascript css taşma olup olmadığını kontrol edin
- 28. VB int boş olup olmadığını kontrol edin
- 29. Resim olup olmadığını kontrol edin php
- 30. Stdin boş olup olmadığını kontrol edin
-1 Birçok nesneler yanıt verebilir Aynı seçicilere, özellikle “lastObject” veya “allKeys” gibi jenerik bir şey. 'IsKindOfClass:' kullanımı, açıkça 'NSArray' ve 'NSDictionary' gibi sınıf kümeleriyle uğraşmanın yoludur. – Calrion
Bu cevap tamamen saçmalık. [myObject isKindOfClass: [NSArray class]], "myObject bir NSArray gibi davranacak mı?" sorusunu doğru bir şekilde yanıtlıyor ve istediğiniz bu. Sadece NSArray veya NSDictionary'ın yanıtlayacağı bir seçici yoktur. İki dakika içinde "allKeys" ve "lastObject" örnek yöntemleriyle bir sınıf oluşturabilirim. Veya "allKeys" i NSArray'a bir kategori yöntemi olarak ekleyin. – gnasher729