2017-02-08 6 views
0

この部分は機能していません(if-part)。 Service.StartはJSONSerializerを呼び出し、JSONを解析します。スウィフトがiOS 10で9回失敗し、下位がうまく動作しない

Service.Start(nil, url: someUrl, onCompletion: { result in 
    if let temp = result as? NSMutableDictionary { 
     //some code 
    } 

コードの結果取得する:

let parsedObject = try JSONSerialization.jsonObject(with: data!, options: []) as! NSDictionary 
        onCompletion(parsedObject) 

任意のアイデア?

+0

「作業していない」という意味を説明してください。それはクラッシュですか?それはコンパイルされていませんか? ifブロックに入っていませんか?また、なぜあなたは 'NSMutableDictionary'を使用していますか?あなたは決してSwiftでこれを使うべきではありません。 – Fogmeister

+0

また、質問に関連するすべてのコードを入力してください。そのままのコードはSwiftのどのバージョンでも意味をなさないかコンパイルされません。 – Fogmeister

+0

if-conditionが失敗します(コードは内部では実行されませんが、ios 10でのみ実行されます)。結果はjson – Faruk

答えて

2

オプション[.mutableContainers]を使用しない限り、パーサーは解析時に可変ディクショナリと可変配列を使用しません。

したがって、NSMutableDictionaryへのキャストは成功しません。あなたは不変のNSDictionaryだけを持っています。

ただし、いずれかを使用すると、スウィフトコードでは適切な解決策ではありません。

+0

ありがとうございます。私はこれがiOS 10の新機能だと思う。 – Faruk

+0

@ファルクそれは新しいことではない。以前は純粋な幸運によってあなたのために過ぎ去っていました。 Swiftが '__NSCFDictionary'をインポートする方法は、Swiftが可変と不変の型を区別せず、可変と不変の変数だけを区別できるため、不変性を隠すことができます。 – Sulthan

関連する問題