17

すでに XCode 8 に更新しており、コードを Swift 2 から Swift 3 に変換する必要があります。

NSDictionary以前、に変換したいときDictionaryは、次のように書きました。

let post_paramsValue = post_params as? Dictionary<String,AnyObject?>

はどこpost_paramsですかNSDictionary

しかし、Swift 3 では、次のエラーが表示されます。

NSDictionary is not convertible to Dictionary

なんで?変更点


編集 1

私も次のことを試しました:

let post_paramsValue = post_params as Dictionary<String,Any>

しかし、それはこのエラーを与えます:

「NSDictionary!」 'Dictionary<String, Any>' に変換できません。 <code>as!</code> を使用してダウンキャストを強制するつもりでしたか?


編集 2

私も次のことを試しました:

let post_paramsValue =  post_params as Dictionary<String,Any>

NSDictionaryの代わりに宣言しますがNSDictionary!、機能しません。このエラーが発生しました:

'NSDictionary' は 'Dictionary<String, Any>' に変換できません。 <code>as!</code> を使用してダウンキャストを強制するつもりでしたか?


編集 3

私も次のことを試しました:

let post_paramsValue =  post_params as Dictionary<String,Any>!

しかし、私はこのエラーを受け取りました:

「NSDictionary!」 'Dictionary<String, Any>!' に変換できません。 <code>as!</code> を使用してダウンキャストを強制するつもりでしたか?

4

3 に答える 3

18
  • NSDictionaryObjective-C では、常にオプションではない値があります。
  • AnyObjectAnySwift 3になりました。
  • 最初の2つの「ルール」を考慮して、NSDictionaryブリッジキャストできますDictionary

let post_paramsValue = post_params as Dictionary<String,Any>

ソースNSDictionaryがオプションの場合、実際のタイプに応じてas Dictionary<String,Any>?or as? Dictionary<String,Any>or as! Dictionary<String,Any>orを使用できますas Dictionary<String,Any>!NSDictionary

于 2016-11-01T10:53:44.273 に答える