2016-03-23 42 views
4

Swift 2.2打破了我幾乎所有的代碼。即使這樣簡單的字符串分配給標籤不工作了:Swift 2.2打破Optionals/Unwrapping Optionals

cell.categoryName.text = peopleArray![indexPath.row]["Name"] as? String 

錯誤說「從低迷現狀,‘字符串?’到'字符串'只打開可選項,你的意思是使用'!!'?

我現在要做什麼改變。

編輯

更多的問題:

if (dict["data"]!["DataDetails"] as! NSArray).count == 0 { 
} 

由於此我得到一個分段錯誤和錯誤顯示這樣的:警告:投從「字符串?」無關型 '的NSArray' 總是失敗

UPDATE:

我使用NSDictionaries,在我的課NSArrays似乎導致問題。將所有文字從Obj-C更改爲swift使代碼正常工作。 所以,我也會推薦其他開發者更喜歡swift文字。

+2

使用'peopleArray![「Name」 ] as!字符串.. ..但我建議不要使用強制解開..使用,如果讓 –

+0

Swift 2.2有一個迴歸關於optionals的類型推斷 - 您的問題可能源於:http://stackoverflow.com/questions/ 36160934 /可選擇的類型 - 不能被推斷 - 正確 - 迅速-2 2-2 – svrs

+0

你能寫出你如何定義你的'peopleArray' –

回答

0

似乎有使用SWIFT類型和Objective-C的NS時,一些細微的差別...類型

let dic:NSDictionary? = ["a":"a"] 

let str:NSString? = dic!["a"] as? NSString 

let dic2:Dictionary? = ["b":"b"] 

let str2:String? = dic2!["b"] //dont need to do any casting, already optional 

print(str) 
print(str2) 

打印

Optional(a) 
Optional("b") 

所以這取決於如何你的數組/字典是定義好的,你可能需要不同的轉換/解包

+0

不,它不起作用。但是,如果我使用peopleArray![「Name」]!作爲字符串然後它的作品,但我希望這是可選的。 –

+0

什麼是'peopleArray'定義爲? – Fonix

+0

它被定義爲NSMutableArray –