Swift のキャストに関する問題に直面しています
ここにコード:
init(response: NSHTTPURLResponse, representation: AnyObject)
{
super.init(entity:NSEntityDescription.entityForName("File", inManagedObjectContext: NSManagedObjectContext.currentContext())!, insertIntoManagedObjectContext:NSManagedObjectContext.currentContext());
var result : [String:AnyObject] = representation as! [String : AnyObject];
if representation["result"] != nil {
print("result = \(representation["result"])")
result = representation["result"] as! [String : AnyObject]
}
}
場合によっては、representation["result"] が nil に等しいと予想されます。その場合、representation["result"] を出力すると、デバッガーは nil を返しますが、それでも条件を渡し、ログに "result = nil" を表示します。次の行を実行すると、致命的なエラーが発生します。オプションの値をアンラップ中に予期せず nil が見つかりました。これは、nil 値をアンラップしようとするため正常です。
しかし、私がそうするなら、私はそれを見つけました:
var result : [String:AnyObject] = representation as! [String : AnyObject];
if result["result"] != nil {
print("result = \(result["result"])")
result = representation["result"] as! [String : AnyObject]
}
それはかなりうまくいきます
私は知っています、あなたの何人かが言うことを知っています:あなたはなぜstackoverflowに投稿する解決策を見つけました-私は最初の解決策が機能しない理由を理解したいので、そして私のエラーは確かにこのコンテキストに固有のものではないからです。