2016-05-12 15 views
0

私はJsonでtableViewを使用していますが、完璧ですが、今日はJSonを更新して動作しません。 JSONとNSJSONSerialization - Swiftでデータを文字列に変換できません

エラー:エラードメイン= NSCocoaErrorDomainコード= 3840「 にできませんが、文字5060の周りにデータを文字列に変換する」私はこの問題を抱えています のUserInfo = {NSDebugDescription = 文字5060を中心にデータを文字列に変換できません}私はこの記事を見つけたと私は仕事だと思いますが、NSJSONSerialization - Unable to convert data to string

let requestURL: NSURL = NSURL(string: rutaJSon)! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if (statusCode == 200) { 
      self.arrayNombre.removeAll() 
      self.arrayTel.removeAll() 
      self.arrayMov.removeAll() 


      do{ 

       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 

       //print(json) 

誰かが私を助けることができるのObj-Cである

?ありがとう

+1

あなたはどうしていますか?あなたはどんな反応を期待していますか?あなたは実際にどんな反応を得ていますか? – Scriptable

+0

JSONレスポンスを調べると、メッセージの内容が正確に表示されます。文字5060は無効です。 JSONをエンコードする際にサーバー上で何が起きているかを確認します。問題はクライアント側ではなく、どこかにあります。 – Moritz

+0

あなたの本当の問題がエンコーディングに関するものなら、なぜサーバーを変更したのですか?彼らはそれを前のものに戻すべきです。彼らが望んでいない場合は、要求の中のパラメータを否定して、必要なエンコーディングを与えることができます。そうでなければ、最後の呼び出しで次のようにすることができます。サーバー応答からのエンコーディングを使用してNSDataからNSStringに変換し、次にNSStringからNSDataに8TF8エンコーディングを使用して、NSStringSialSerializationを使用できます。 – Larme

答えて

1

サーバーが正しいJSONエンコードタイプの1つを使用していないようです。ドキュメントから:UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE:

データはJSONの仕様に記載されている5つのサポートされるエンコーディングのいずれかでなければなりません。データにBOMがある場合とない場合があります。解析に使用する最も効率的なエンコーディングはUTF-8です。このメソッドに渡されるデータをエンコーディングする場合は、UTF-8を使用してください。

サーバーでデータを正しくエンコードする必要があります。

関連する問題