2016-05-20 4 views
0

は、私はこれらのコード行は、このコンパイルエラーを取得: http://imgur.com/Efe1nQf迅速なコンパイルエラー: 'String ?!'からのダウンキャストto 'String'はオプションをアンラップするだけです。 「!!」を使用することを意味しましたか? cocoapods 1.0にアップグレードした後

UPDATE: より多くのコード

var strName = String() 
var strEmail = String() 
var strFacebookID = String() 
var strPassword = String() 
var objHelper = Helper() 

.... 

let strFirstName = result["first_name"] as! String 
let strLastName = result["last_name"] as! String 
self.strName = strFirstName + "_" + strLastName 
self.strEmail = result["email"] as! String 
self.strFacebookID = result["id"] as! String 
ここ

Downcast from 'String?!' to 'String' only unwraps optionals; did you mean to use '!!'?

が詳細にエラーのスクリーンショットですここに:https://gist.github.com/anonymous/9c91c2eb1ccf269e78a118970468d1e8

+0

結果の型は何ですか? – PeejWeej

+0

@PEEJWEEJ 'result'は' AnyObject? 'というエラーメッセージによると、 – vadian

+0

@Axilはそれを辞書として使用していますが、あなたは[String:AnyObject]を意味しましたか? – PeejWeej

答えて

1

エラーメッセージには、result自体はオプションであるため、それぞれresultと値の両方をアンラッピングする必要があります。より安全かつ少ない種類の鋳造用

let strFirstName = result!["first_name"] as! String 

以上結合オプションの使用

if let userData = result as? [String:String] { 
    let strFirstName = userData["first_name"]! 
    let strLastName = userData["last_name"]! 
} 
+0

これは私がそれを解決すると思います。他のエラーが出てきました。私は他の誰かの迅速なコードを修正しようとしているようにあなたが何をしているのか分かりません。感嘆符は何ですか?とは何ですか?私の無知を助けてくれてありがとう。 – Axil

+0

感嘆符はオプションをアンラップし、オプションが 'nil'の場合はランタイムエラー(クラッシュ)を引き起こします。疑問符は 'if-let'と一緒にオプションをアンラップし、成功するとその値を特定の型にキャストします。そうでなければ' if'節はスキップされます。 Swift Language Guideの基本をお読みください。ありがとう。 – vadian

+0

ありがとう。これはおそらくこれを解決します。 – Axil

0

result["key"]自体がキーが存在しない可能性があるため、オプションで返します辞書

まず、オプションのラップを解除してから、返された値をStringにキャストする必要があります。これを試してみてください:

let strFirstName = result["first_name"]! as! String 

これはコードのようなものです。おそらく、その辞書は現在のタイプではなく、タイプ[String : String]である必要があります。

関連する問題