2017-01-18 41 views
0

私はこの問題をここで扱っています。 私はalamofireでjsonリクエストを作成しています。私のjsonの中には、ギリシャ語であるu00bなどの文字がいくつかあります。 辞書を印刷しても、 "αβγ"のような正しい文字列は表示されませんが、ユニコード文字は表示されます。swift 3とAlamofireのJSON文字列のUnicode文字

私はutf-8にあるすべてのテキストをUnicodeするための適切な方法はどれですか?適切な文字を印刷できますか?

次のコードは、私が要求するものです。

func getManPerf() { 
    Alamofire.request(baseurl, method: .get, parameters: ["action": "categories", "subaction": "getproducts", "category_id": "11", "limit": "0,30"]).responseJSON { (responseData) -> Void in 
     if((responseData.result.value) != nil) { 
      let result = responseData.result 
      print(result) 

      if let dict = result.value as? Dictionary<String, AnyObject>{ 
       if let list = dict["products_in_category"] as? [Dictionary<String, AnyObject>] { 

        for obj in list { 
         let manPerfumes = Products(productDict: obj) 
         self.manPerfumeData.append(manPerfumes) 
        } 
        DispatchQueue.main.async{ 
         self.manPerfumeCV.reloadData() 

        } 


       } 
      } 

     } 
    } 
} 

正しいデータが得られるようにコードにどのような変更を加える必要がありますか?ありがとう!

+0

印刷 'dict'ではなく' result'。辞書のUTF8文字は正しいです。 – vadian

+0

@vadianはい私は 'dict'も印刷しました。私は' u00b'のような文字を見ます。 –

+1

これは、印刷対コンソール表現だけです。文字列の値をラベルに割り当てると、適切な文字が表示されます。 – vadian

答えて

1

フォーマット追加する前に、UTF-8の文字列;)遊び場で

let manPerfumesUTF = String(UTF8String: manPerfumes.cStringUsingEncoding(NSUTF8StringEncoding)) 

例:

class Products { 

    let _name : String 

    init(productDict : [String : String]) { 

     self._name = productDict["name"] ?? "error" 
    } 

} 

let productDict = ["name" : "Hugo Boss"] 
let productDictWithUTF8 = ["name" : "\u{03b2}\u{03b5}\u{03b5}\u{03c1}"] 

let hugoBoss = Products(productDict: productDict) 
let greekParfume = Products(productDict: productDictWithUTF8) 
print(hugoBoss._name)  // Hugo Boss 
print(greekParfume._name) // βεερ 
+0

'製品にはcStringUsingEncodingのメンバーがありません 'というエラーがあり、製品は私のモデルクラスです。 –

+0

あなたのProductsクラスのinit関数でコードを間違って読んでいました。あなたがUTF-8を使って表示したい文字列を変更する必要があります。例えば 'let let productName = productDict ["product_name"] {self.productName = String(UTF8String:productName.cStringUsingEncoding(NSUTF8StringEncoding)) ' self._nameのように、商品名の商品名は 'の場合は – Emptyless

+0

です。 = productName } ' と私はyoを入れようとしていますurの例ですが、@vadianの回答に関連してエラー –

関連する問題