2016-03-23 12 views
4

Swift 2.2はほとんどすべてのコードを壊しています。ラベルに割り当てたとしても、この単純な文字列はもう動作しません:Swift 2.2 breaksオプション/アンラップオプション

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

エラーから「ダウンキャストを言う 『文字列!』 '文字列'はオプションをアンラップするだけですが、 '!!'を使用するのですか? "

私は今何をする必要がありますか?

EDIT

多くの問題:このため

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

私はセグメンテーションフォールトを取得していますし、エラーがこれを示しています警告:キャストから '文字列!'無関係なタイプに「NSArrayのはいつも

UPDATE失敗:

を私はNSDictionaries、問題を引き起こしているようだ私のクラスでNSArraysを使用していました。すべてのリテラルをObj-Cから迅速に変更すると、コードが適切に機能しました。 したがって、迅速なリテラルを好む他の開発者にもお勧めします。

+2

'peopleArray![" Name " ]として!文字列 '..しかし、私は力unwrapを使用しないことをお勧めします。もし使用されていれば使用してください –

+0

Swift 2.2はオプションの推論の型推論に関して回帰を持っています - あなたの問題はそれから生じるかもしれません:http://stackoverflow.com/questions/ 36160934/option-typeals-in-be-inferredred-in-swift-2-2 – svrs

+0

'peopleArray'の定義方法を書けますか? –

答えて

0

そうする方法に応じてタイプ

例えば

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") 

...迅速なタイプとObjective-CのNSを使用して、いくつかのわずかな違いがあるようですあなたの配列/ディクショナリが定義されていれば、異なるキャスト/アンラッピングが必要な場合があります

+0

いいえ動作しません。しかし、私はpeopleArrayを使用する場合!["名前"]!文字列としてそれは動作しますが、私はこれをオプションにします。 –

+0

'peopleArray'は何と定義されていますか? – Fonix

+0

これはNSMutableArrayとして定義されています –

関連する問題