[問題] 關於array插入null值

看板MacDev作者 (KaKa)時間15年前 (2010/08/22 20:47), 編輯推噓6(6026)
留言32則, 7人參與, 最新討論串1/1
目前在寫程式的時候遇到了一些困難 現在想要把手機電話簿裡的值分類取出來存成array 舉例來說就是姓氏、電話等等取出成NSString之後 再分別存進nameArray、PhoneArray這樣 取值部分沒有問題 但問題發生在有時候某些欄位取出來是沒有值的 在使用 [某某array addObject:某某string]; 會有Error 希望能夠吧nil的值也存進Array裡 (而不是被下一個取出的值給寫入) 搜尋了一下有提到NSNULL這個東西 但是試過了還是有問題(應該是我用錯了吧XD) 請問各位高手有相關經驗嗎? 或是有其他更smart的方法? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.87.53

08/22 21:11, , 1F
就是用 NSNull 啊
08/22 21:11, 1F

08/22 21:12, , 2F
把 [NSNull null] 放進去就好
08/22 21:12, 2F

08/22 21:19, , 3F
是說這樣嗎? [某某array addObject:[NSNull null]]; ?
08/22 21:19, 3F

08/22 21:25, , 4F
是啊
08/22 21:25, 4F

08/22 21:27, , 5F
建議稍微花點時間了解 NULL、nil、Nil 與 NSNull 差別
08/22 21:27, 5F

08/22 21:32, , 6F
NULL, nil, Nil是不一樣的東西嗎??
08/22 21:32, 6F

08/22 21:38, , 7F
不一樣
08/22 21:38, 7F

08/22 21:39, , 8F
NULL 就是 0,nil 雖然是 0,但是可以對 nil 送
08/22 21:39, 8F

08/22 21:39, , 9F
objc message。Nil 是空的 class
08/22 21:39, 9F

08/22 21:39, , 10F
Z大我嘗試過之後console反而出現了
08/22 21:39, 10F

08/22 21:40, , 11F
[NSNull isEqualToString:]: unrecognized selector
08/22 21:40, 11F

08/22 21:40, , 12F
sent to instance 0x2737d68
08/22 21:40, 12F

08/22 21:41, , 13F
他說是'NSInvalidArgumentException'
08/22 21:41, 13F

08/22 21:41, , 14F
因為你對 NSNull 傳了NSString 的 method
08/22 21:41, 14F

08/22 21:42, , 15F
如果你知道 array 裡頭有 NSNull
08/22 21:42, 15F

08/22 21:42, , 16F
就用 isKindOfClass: 判斷一下哪種物件可以做什麼事
08/22 21:42, 16F

08/22 21:42, , 17F
例如發現是 [NSNull class] 就 return 了
08/22 21:42, 17F

08/22 22:56, , 18F
呃...要是我就不會用NSNull 直接存入@""就好 @@
08/22 22:56, 18F

08/22 23:25, , 19F
zonble在外面有沒有開課呀? 我好想上~
08/22 23:25, 19F

08/22 23:41, , 20F
我也想上課 自學好累喔
08/22 23:41, 20F

08/23 00:12, , 21F
放個 NSNull 與放 @"" 還是有差別,因為你有時候會想要判斷
08/23 00:12, 21F

08/23 00:13, , 22F
到底是真的沒資料,還是的確就是個長度為 0 的字串
08/23 00:13, 22F

08/23 00:13, , 23F
另外,Cocoa framework 還有另外一個代表沒東西的玩意
08/23 00:13, 23F

08/23 00:14, , 24F
叫做 WebUndefined,不過這個通常不太會用到
08/23 00:14, 24F

08/23 00:14, , 25F
WebUndefined 的用途是,在 webkit 中,每個網頁上的 js
08/23 00:14, 25F

08/23 00:14, , 26F
物件,其實都可以翻譯成對應的 objc 物件,而如果是沒有
08/23 00:14, 26F

08/23 00:15, , 27F
定義的 js 物件,就會變成 WebUndefined。
08/23 00:15, 27F

08/23 09:28, , 28F
比較是不是[NSNull null],直接用 == 比。就可以了
08/23 09:28, 28F

08/23 09:57, , 29F
是指可以利用(A==[NSNull null])或(A!=[NSNull null])
08/23 09:57, 29F

08/23 09:57, , 30F
來判斷A是不是沒有資料囉?
08/23 09:57, 30F

08/23 12:48, , 31F
判斷是不是[NSNull null]。[NSNull null] 是唯一的。
08/23 12:48, 31F

08/23 16:42, , 32F
同樓上 先判斷是否為[NSNull null] 不是再用isEqual...
08/23 16:42, 32F
文章代碼(AID): #1CSHnkKy (MacDev)
文章代碼(AID): #1CSHnkKy (MacDev)