2016-11-15 6 views
3

aws.amazon.com/mobile/の現在のサンプルコードに続いて、Swift 3によく更新されていないコード項目がいくつかあります(かなり奇妙ですそのリソースを考慮して)。最新のAmazon AWS Mobileサンプルコードで奇妙なSwift 3の問題

if (!isInitialized) { 
AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler: 
    {(result: AnyObject?, error: NSError?) -> Void in 
    print("Result: \(result) \n Error:\(error)") 
    } as! (Any?, Error?) -> Void) 
isInitialized = true 
} 

だけで任意の実行時にクラッシュ:

あなたはAWSMobileClient.swiftに来たとき、このようなコードの行があります。

は幸い、私は問題はこれですので

AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler: 
     {(result: Any?, error: Error?) -> Void in 
      print("Result: \(result) \n Error:\(error)") 
     } as! (Any?, Error?) -> Void) 

、私は警告を受ける

enter image description here

のように引数を変更することにより、それを修正することができました確かに、それはそれをキャストしようと無意味と思われます同じ種類に。

しかし、あなたは、単にキャストを削除した場合

AWSIdentityManager.defaultIdentityManager().resumeSession(completionHandler: 
     {(result: AnyObject?, error: NSError?) -> Void in 
     print("Result: \(result) \n Error:\(error)") 
     } 
    isInitialized = true 

だけでは奇妙な構文エラー

​​

1のすべての種類を取得し、全く動作しない)のはなぜですとにかくそこにキャストがありますか?

2)どうやってキャストを取り除くことができますか、それとも正しく書き込んでも同じキャストがないので警告が出ませんか?

3)解決策は力を取り除くことだと思うが(as!ではなくasではなく)、ブロックをキャストしなければならない理由がわからない。


- コードの同じ行で、あなたはここでiOSシミュレータでEXC_BAD_ACCESSを取得した場合Amazonはその後、シミュレーターの操作を行い、コメント」が含まれる - > ...コンテンツと設定をリセットし、これがクリアされます同じバンドルIDを持つ他のアプリに格納されている不正な認証トークン。私がここで求めている問題はそれとはまったく関係ありません。

答えて

4

おそらく正しい構文である最後の例では、閉じ括弧がありません。

あなたが、私はそれをより明確にすることは必須ではありませんすべてを削除

}ではなく})

期待して

} as (Any?, Error?) -> Void) 

を置き換える:

WSIdentityManager.defaultIdentityManager().resumeSession(completionHandler: { (result, error) in 
    print("Result: \(result) \n Error:\(error)") 
}) 
isInitialized = true 

や静止と短いです末尾クロージャ構文:

タイプの注釈(完了ブロック内)は必要ありません。彼らは良いよりも害を加えることができます。

PSは:isInitializedで完了ブロックすることになっていませんか?

+0

ああ!あなたはそれを説明した。もっと。ありがとう! :) – Fattie

+0

(PS、 'isInitialized'に関して私はそれもその完成ブロックにあるはずです;彼らが何をしているのかはわかりません:うまくいくようです) – Fattie

+0

私はその質問者が私の回答を編集するのが嫌いです私はそれを '私の道'と編集しました;-) – vadian