Json,

2016-05-11 15 views
8

numaralı anahtar içermiyorsa, swiftyJSON anahtarının var olup olmadığını nasıl kontrol edebilirim swiftyJSON yöntemi var(), ancak her zaman söyledikleri gibi çalışmıyor gibi görünüyor. Bu durumda aşağıdaki sonuçlara nasıl ulaşabilirim? JSON yapısını değiştiremiyorum çünkü bunu istemcinin API'sinden alıyorum.Json,

var json: JSON = ["response": ["value1","value2"]] 
if json["response"]["someKey"].exists(){ 
    print("response someKey exists") 
} 

Çıktı: someKey var olmadığından basılmış edilmemelidir

 
response someKey exists 

. Ancak bazen bu anahtar müşterinin API'sinden gelir ve var olup olmadığını veya düzgün olup olmadığını bulmam gerekir.

cevap

13

Sizin durumunuzda çalışmıyor çünkü json["response"] içeriği bir sözlük değil, bir dizidir. SwiftyJSON, bir dizide geçerli bir sözlük anahtarını kontrol edemiyor. beklendiği gibi bir sözlüğe sahip

, çalışıyor, durum, infaz edilmez:

var json: JSON = ["response": ["key1":"value1", "key2":"value2"]] 
if json["response"]["someKey"].exists() { 
    print("response someKey exists") 
} 
senin sorunun çözümü içerik .exists() kullanmadan önce bir sözlük gerçekten olup olmadığını kontrol etmektir

:

if let _ = json["response"].dictionary { 
    if json["response"]["someKey"].exists() { 
     print("response someKey exists") 
    } 
} 
+0

Çözümünüz iyi çalışıyor. teşekkür ederim – Kocio