自己用swift開發(fā)才這么幾次,并不熟悉所以在摸索過程中,在今天做東西的過程中由于需要用到字典里邊需要插入nil,心安理得的使用如下寫法感覺沒有問題
let array = [["key1":"val1","key2":"val2","key3":nil],["key1":"val1","key2":"val2","key3":nil]]
但我錯了,就因?yàn)檫@種寫法今天浪費(fèi)了我很長時間查找為什么我的xCode在編譯的時候?yàn)槭裁纯偸请娔X內(nèi)存百分之百的使用率,但xCode盡讓沒有報(bào)出是哪里出現(xiàn)的問題,我?guī)缀醵家偭耍梢跃褪遣恢罏樯叮?jīng)過各種排查,然后重裝xCode還是沒有能解決掉,后來突然想起可能和這種寫法有關(guān)將整塊代碼注釋掉,編譯運(yùn)行,沒錯編譯通過了并且正常運(yùn)行,后來就瘋狂查資料,查有關(guān)字典里存儲nil的資料,后來終于找到相關(guān)內(nèi)容,其實(shí)正確寫法應(yīng)該是在定義這種數(shù)據(jù)時候應(yīng)該定義好數(shù)據(jù)類型,如以下代碼是可以正常用的
let array:[[String,AnyObject?]] = [["key1":"val1","key2":"val2","key3":nil],["key1":"val1","key2":"val2","key3":nil]]
沒錯就是這種代碼才可以用,你肯定注意到AnyObject?這個內(nèi)容,如果不寫出結(jié)構(gòu)的定義那么編譯器也不會發(fā)現(xiàn)有什么問題,可能swift的編譯器目前還沒考慮到這些,不過以后可能編譯器會把之前說的那種寫法兼容上,自己可以解析數(shù)據(jù)結(jié)構(gòu)類型或是能夠在xCode拋出警告告訴我們那樣寫是不對的,然后給出建議寫法。