2016-05-11 18 views
8

Tôi biết về phương thức swiftyJSON tồn tại() nhưng dường như không hoạt động như thường lệ. Làm thế nào tôi có thể nhận được kết quả phù hợp trong trường hợp này dưới đây? Tôi không thể thay đổi cấu trúc JSON vì tôi nhận được điều này thông qua API của khách hàng.Cách kiểm tra xem khóa có tồn tại trong swiftyJSON khi json chứa mảng không có khóa

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

Output:

 
response someKey exists 

Điều đó không nên được in vì someKey không tồn tại. Nhưng đôi khi khóa đó xuất phát từ API của khách hàng và tôi cần phải tìm hiểu xem nó có tồn tại hay không.

Trả lời

13

Nó không hoạt động trong trường hợp của bạn vì nội dung của json["response"] không phải là từ điển, nó là một mảng. SwiftyJSON không thể kiểm tra khoá từ điển hợp lệ trong một mảng.

Với một cuốn từ điển, nó hoạt động, tình trạng này không được thực hiện, như mong đợi:

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

Giải pháp cho vấn đề của bạn là để kiểm tra xem các nội dung thực sự là một cuốn từ điển trước khi sử dụng .exists():

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

Giải pháp của bạn hoạt động tốt. Cảm ơn bạn – Kocio

Các vấn đề liên quan