2016-06-03 16 views
7

Tôi đang chơi với JSON trong hai ngày qua và phải đối mặt với rất nhiều vấn đề tò mò và nhờ tràn ngăn xếp, nó giúp tôi. đây là khóa đặc trưng JSON có loại giá trị kiểu chuỗi kéo.Làm thế nào để xử lý giá trị null json trong Swift

"featured":"1" 

hoặc

"featured": null, 

tôi đã cố gắng rất nhiều để xử lý này nhưng thất bại

step 1) 

if dict.objectForKey("featured") as? String != nil { 
    featured = dict.objectForKey("featured") as? String 
    } 

bước 2)

let null = NSNull() 
    if dict.objectForKey("featured") as? String != null { 
    featured = dict.objectForKey("featured") as? String 
    } 

bước 3)

if dict.objectForKey("featured") as? String != "" { 
    featured = dict.objectForKey("featured") as? String 
    } 

nhưng không may không thể tìm thấy giải pháp, bạn trả lời sẽ được đánh giá cao.

+0

Is it gây tai nạn? –

+0

có khi lưu trữ coredata –

Trả lời

16

Hãy thử này

func nullToNil(value : AnyObject?) -> AnyObject? { 
    if value is NSNull { 
     return nil 
    } else { 
     return value 
    } 
} 

object.feature = nullToNil(dict["feature"]) 

Ở đây, bạn có thể sử dụng phương pháp này, mà sẽ chuyển đổi giá trị null tới bằng không và sẽ không' gây tai nạn trong ứng dụng của bạn.

Bạn cũng có thể sử dụng làm?

object.feature = dict["feature"] as? NSNumber 

Cảm ơn.

+0

Câu trả lời hay, cảm ơn !!!! – MRizwan33

2

Hãy thử điều này!

if let demoQuestion = dict.objectForKey("featured"){ 
    let getValue: String = demoQuestion as! String 
} 
else { 
print("JSON is returning nil") 
} 
5

Đây là mã hoạt động, loại toán tử truyền (như?) Sẽ thực hiện thủ thuật tại đây. Null sẽ không được nhập vào String, do đó, việc thực hiện sẽ đi đến khối thất bại.

if let featured = dict["featured"] as? String { 
    print("Success") 
} 
else { 
    print("Failure") 
} 
+0

điều này làm việc cho tôi .. nhưng trong logic khác –

3

Chuỗi tùy chọn với if let hoặc đối tác guard let là cách để thực hiện. Cả ba bước kết hợp (thiếu, gõ sai - NSNull quá, trống string):

guard let featured = dict.objectForKey("featured") as? String where !value.isEmpty else { 
    print("featured has wrong value") 
} 

// do what you need to do with featured 

Nếu bạn muốn biết thêm về tùy chọn chaining check out documentation

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