2017-02-23 81 views
-2

我正在解析JSON響應並嘗試檢查我的其中一個密鑰是否爲null。我將如何去做這件事?我有以下幾點:檢查解析的json是否爲NSNULL

var routingNumber = (dic.value(forKey: "result") as! NSDictionary).value(forKey: "routingNumber") as! String 

,這將返回:

無法投類型的值 'NSNull'(0x107d238c8)到 '的NSString'(0x107329c40)。

如何檢查值是否爲NSNULL?

if(something != NSNULL){ 
    do something 
}else{ 
    do something else 
} 
+0

如果讓routingNumber =爲(DIC [ 「結果」] [字符串

func isNsnullOrNil(object : AnyObject?) -> Bool { if (object is NSNull) || (object == nil) { return true } else { return false } } 

通話功能:任何])?[「routingNumber」]爲? String {} – Suen

+0

不要在Swift中使用'NSDictionary'。使用Swift字典。不要使用'value(forKey:)'來獲取一個值,除非你有特殊的理由使用KVC(在這種情況下你沒有這個)。 – rmaddy

+0

Wy不使用Swift字典? –

回答

2

你可以像這樣從dic中提取價值。

if let value = (dict["key"] as? String) 
{ 
    //NOT NULL 
} 
else 
{ 
    //NULL 
} 
+1

使用控制+ k來格式化您的代碼。 –

+0

不需要括號。 – rmaddy

+0

這是否確保'dict [「key」]'的值不是零,也是'String'(不是其他類型)? – hzxu

0

我有同樣的問題一次。

檢查IF NSNULL

if let result = dic["result"] as? NSDictionary { 
    // There is a dictionary 

    if let routingNumber = result["routingNumber"] as? String { 
     // There is a routingNumber 
    } 
    else if let routingNumber = result["routingNumber"] as? NSNull { 
     // There is routingNumber but Null 
    } 
    else { 
     // No routingNumber 
    } 
} 

這應該做的伎倆。

+0

爲什麼使用'NSDictionary'?使用Swift字典。 – rmaddy

+1

user2423476的問題使用了'NSDictionary'。 –

0
if let result = dict["result"] as? [String:Any], let routingNumber = result["routingNumber"] as? String { 
    print("the routingNumber is \(routingNumber)") 
} else { 
    print("nil") 
} 
1

下面創建功能要檢查null或零值

if isNsnullOrNil((dic.value(forKey: "result") as! NSDictionary).value(forKey: "routingNumber")) 
{ 
    print("object is null or nil") 
} 
else 
{ 
    print("object is not null or nil") 
}