標籤:ios nsarray 數組 空 判斷
這篇文章主要來說一下,NSArray判斷是否為空白需要注意的問題。
有些經驗不足的開發人員,在判斷數組是否為空白時,會簡單的寫成:
if (array != nil)
這種形式,或者是:
if (array.count != 0)
這種形式。
其實,嚴格來說,這兩種寫法,都是考慮不足並且不穩定的。
首先來說一下,二者之間的區別。
array == nil
這種情況指的是這個array對象是一個nil對象,而不是一個NSArray類型對象。任何對NSArray類屬性的直接調用都會導致程式crash,例如:
int length = array.count; // 如果array是nil對象,程式走到這一行會直接crash
array.count == 0
這種情況跟上一種不同的在於,此時的array是一個NSArray類型對象,只不過這個array裡面沒有元素。但它本身是可以作為NSArray對象來使用的。
int length = array.count; // 不會有問題,length的值為0
但為什麼說這兩種判斷都是不安全的呢?
原因是因為這兩種情況在實際開發中,是都有可能出現的。
前一種情況,後台有可能由於各種原因,對某個欄位返回了null值,這時我們取到的就是nil,後一種情況,後台可能對某一個資料取值,但取到了0個,這時返回的是一個空組,我們取到的就是[],空組。
我們做空值判斷的很大一部分原因就是為了防止在後台介面資料返回一些異常資料的時候,程式能保證穩定性。
因此只判斷一種情況是不安全的,需要兩種情況都進行判斷。
比如你可以寫成:
if (array != nil && array.count != 0)
而我個人的建議是,在判斷 array.count 的時候,最好不要用 . 號,儘管在上面的代碼中,array.count 不會出現問題,但作為一種習慣,我更推薦寫成:
if (array != nil && [array count] != 0)
原因很簡單,[array count] 即使在array為nil對象的時候,也不會導致crash出現。
iOS開發中,數組為空白的判斷處理