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

aşağıda görüldüğü gibi her bir listeleme denilen "baskılarda" bir dizi olduğu bir JSON var "LEA-BTD-7ED". Şimdiye kadar sahip olduğum şey ama çöküşü.Swift: JSONs dışına Dizileri Ayrıştırma Her listeden çıkmayı bu diziyi alıp böyle bir dizeye dönüştürmek nasıl

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

ne kazasında veya hata sana ne anlatıyor yazdırır yürütülüyor? – NRitH

+0

'__NSCFArray' (0x107833d68) 'değeri' NSString '(0x10888bb48) değerine dönüştürülemedi. Biliyorum çünkü dizi dizisi çevirmek için çalışıyorum çünkü – user3015221

cevap

0

Bir String bir Array (contents[i]["printings"]) döküm olamaz.

:; Burada
+0

dizisi çalışmıyor, çünkü bir segmentasyon hatası olduğunu düşündüğü için çalışmıyor. Dizi ile yapmak, bir nedenle bölümleme hatasına neden olur. – user3015221

+0

Hmm. İçindekiler [i] 'İlk olarak 'Sözlük' olarak mı yayınlanmalı? Hangi tipin hangisi olduğunu nasıl biliyor? – NRitH

+0

Bunu da denedim. Sorun şu ki, herhangi bir nesneyi diziye çeviremiyorum – user3015221

1

kod

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

(. Onsuz denemek Aslında buraya as! Array ihtiyacınız olup olmadığından emin değilim): Ne istiyorsun Array bireyin joinWithSeparator() yöntem, bu gibi

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)") 
    } 
} 

o "LEA-BTD-7ED-8ED-9ED-10E-DD2-M10-DPA-ME4-DD3_JVC"