自己用swift開發才這么幾次,并不熟悉所以在摸索過程中,在今天做東西的過程中由于需要用到字典里邊需要插入nil,心安理得的使用如下寫法感覺沒有問題
let array = [["key1":"val1","key2":"val2","key3":nil],["key1":"val1","key2":"val2","key3":nil]]
但我錯了,就因為這種寫法今天浪費了我很長時間查找為什么我的xCode在編譯的時候為什么總是電腦內存百分之百的使用率,但xCode盡讓沒有報出是哪里出現的問題,我幾乎都要瘋了,可以就是不知道為啥,經過各種排查,然后重裝xCode還是沒有能解決掉,后來突然想起可能和這種寫法有關將整塊代碼注釋掉,編譯運行,沒錯編譯通過了并且正常運行,后來就瘋狂查資料,查有關字典里存儲nil的資料,后來終于找到相關內容,其實正確寫法應該是在定義這種數據時候應該定義好數據類型,如以下代碼是可以正常用的
let array:[[String,AnyObject?]] = [["key1":"val1","key2":"val2","key3":nil],["key1":"val1","key2":"val2","key3":nil]]
沒錯就是這種代碼才可以用,你肯定注意到AnyObject?這個內容,如果不寫出結構的定義那么編譯器也不會發現有什么問題,可能swift的編譯器目前還沒考慮到這些,不過以后可能編譯器會把之前說的那種寫法兼容上,自己可以解析數據結構類型或是能夠在xCode拋出警告告訴我們那樣寫是不對的,然后給出建議寫法。