2016-04-14 6 views
0
[{"name":"Air Elemental","toughness":"4","printings":["LEA","BTD","7ED","8ED","9ED","10E","DD2","M10","DPA","ME4","DD3_JVC"]}] 

私は下図のように、各リストと呼ばれる「印刷物」の配列があるJSONを持っています、 "LEA-BTD-7ED"。ここまでは私がこれまでにしてきたことですが、クラッシュしています。スウィフト:JSONsのうち、配列の解析、私は、各物件のうち、この配列を取るなどの文字列に変換する方法を

let err : NSErrorPointer? 
    let dataPath = NSBundle.mainBundle().pathForResource("cardata", ofType: "json") 
    let data : NSData = try! NSData(contentsOfFile: dataPath! as String, options: NSDataReadingOptions.DataReadingMapped) 
    do{ 
     var contents = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject] 

     for var i = 0;i<contents.count;++i{ 

       let printing = contents[i]["printings"] as! String 
       } 
     } 
+0

出力しますか? – NRitH

+0

タイプ '__NSCFArray'(0x107833d68)の値を 'NSString'(0x10888bb48)にキャストできませんでした。私はその配列を文字列に変換しようとしているので、その配列を知っています – user3015221

答えて

0

あなたはStringArraycontents[i]["printings"])をキャストすることはできません。

+0

配列なしで行うことは、セグメンテーションエラーと考えて動作しません。それを配列で行うと何らかの理由でセグメンテーションエラーが発生します。 – user3015221

+0

Hmm。 'contents [i]'は 'Dictionary'として最初にキャストされる必要がありますか?どのようなタイプがどのようなものかをどのように知っていますか – NRitH

+0

それも同様に試しました。問題は、オブジェクトを配列に変換できないことです。 – user3015221

1

ここでは、コードです。

let printing = contents[i]["printing"] as! Array 
let printingStr = printing.joinWithSeparator("-") 

(。それなしでそれを試して実は、私はあなたがas! Arrayが必要かどうかわからない):

これは以下のように何が欲しいのは Arrayさんは、 joinWithSeparator()方法であり、それを実行
let path = dataPath! 
if let JSONData = NSData(contentsOfFile: path) 
{ 
    do 
    { 
     if let dictionariesArray = try NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions()) as? 
      [[String: AnyObject]] 
     { 
      for dictionary in dictionariesArray 
      { 
       if let printingsArray = dictionary["printings"] as? [String] 
       { 
        let printingsString = printingsArray.joinWithSeparator("-") 
        print(printingsString) 
       } 
      } 
     } 

    } 
    catch 
    { 
     print("Could not parse file at \(path)") 
    } 
} 

は、あなたのクラッシュやエラーはあなたを教えない何を "LEA-BTD-7ED-8ED-9ED-10E-DD2-M10-DPA-ME4-DD3_JVC"

関連する問題