2013-08-20 59 views
-2

我從服務器獲取數據,然而NSStringNULL在某些情況下,我不知道爲什麼NSString是NULL,怎麼用NSString做NULL?如何使NSString是NULL

+0

的樣本數據將是有益的。 –

+0

聽起來像服務器正在響應沒有數據 – griz

+0

將建議創建一個字符串不包含字符 – Saurabh

回答

0

試試下面的宏

#define IsNULL(original) original == (id)[NSNull null] 

#define IfNULL(original, replacement) IsNULL(original) ? replacement : original 

#define SafeString(value) IfNULL(value, @"") 

然後用

NSLog("%@",SafeString(YOURSTRING)); 
+0

Downvote的任何理由?你可以嘗試改善答案.. – iphonic

+0

不是我的失望,但你如何使用IsNULL之前,你定義它?另外OP說它是'NULL'而不是'NSNull'。 – borrrden

+0

它只是一個例子,它可以明顯糾正,並可以添加其他比較..我正在糾正序列雖然.. – iphonic

2

好了,該字符串不是NULL

首先,在目標C中,您應該使用nil而不是NULL

另一件事,你不能在iOS容器中有nilNSArray,NSDictionary等)。 但是,一些API需要爲一個鍵設置一個空值。

要解決這個問題,Apple推出了NSNull類(和單例)。

因此,要檢查數據是空的,你必須將值與NSNull單比較,像這樣:

id data = yourDictionary[@"yourKey"]; 
if (data == [NSNull null]) { 
    // Data is invalid, and calling any message on it will result in a crash 
} else { 
    // Place your data in the any kind of container. You can even use isKindOfClass to be sure. 
    NSString * string = data; 
} 
+0

我的答案是如何不同於這個答案? – iphonic

+0

我只是想幫助他。用你的方式,它會起作用,但他不知道他在做什麼。我希望通過我的回答,他將能夠理解發生了什麼,而不是使用他不瞭解的宏。 – DCMaxxx