2016-03-28 20 views
1

Java deneyimi yükler ancak nispeten n00b. Ben derleme zamanında ve çalışma zamanı bir dizi içine yayınlanmaya devam Ben gibi birçok 3 olarak görüntüleri olabilir "görüntüleri" dizisi, ayıklamak başaramıyorum hangi aşağıdaki JSON, ...Swift'i kullanarak JSON'dan ayıklama dizisi Swift ile

{ 
     "status" : "OPEN", 
     "description" : “…”, 
     "name" : “…”, 
     "owner" : 1, 
     "images" : [ 
     { 
      "id" : 1, 
      "path" : "\/uploads\/1-60003456.jpeg" 
     } 
     ], 
     "created" : 1459135829000, 
     "id" : 1 
    } 

var hatalar. Örneğin, SwiftyJSON dokümanlardan bu kodu: "

images.append(myImages![0]["path"] as String) 

hatayı verir:

for (key,subJson):(String, JSON) in json { 
    if(key == "images"){ 
     let myImages = subJson.array 
     print(myImages![0]["path"]) 
    } 
} 

Doğru, henüz benim [Dize] görüntülerde bu değeri kaydetmeye çalışırken "yolu" için değerini yazdırır Alt dizin, "dize" türünde bir dize ile JSON değeri olamaz "

XCode, subJson'ın" görüntüler "için bir NSDictionary olduğunu söyler (veya bir dizi sözlük mü?), Ancak, bu şekilde yayınlamaya çalıştığımda , "JSON türünü dönüştürmek için NSDictionary yazarken dönüştürülemez".

Eminim bu basit bir sözdizimsel hatadır, ancak bu noktada çeşitli hatalar arasında gidip geliyorum. Herhangi bir rehberlik için teşekkürler.

cevap

0

Aşağı akım kullanmayın, SwiftyJSON bu işi zaten yapmış. daha sonra String değil

if let path = myImages![0]["path"].string { 
    images.append(path) 
} 

myImages![0]["path"] ise: o güvenle paketini isteyen bir Opsiyonel olduğu için

myImages![0]["path"].string 

: SwiftyJSON zaten çözümlenen olan nesnenin bir dize gösterimi için opsiyonel bir getter vardır

myImages![0]["path"].array 
myImages![0]["path"].dictionary 
myImages![0]["path"].int 

vb

: JSON türleri vardır olarak SwiftyJSON birçok opsiyonel toplayıcılar diye size sunar SwiftyJSON ile

sen doğrudan da alt simge:

if let firstImagePath = json["images"][0]["path"].string { 
    // use "firstImagePath" 
} 

Sonuç olarak, döngünün başka türlü: kusursuz çalıştı

if let images = json["images"] { 
    for image in images { 
     if let path = image["path"].string { 
      // use "path" 
     } 
    } 
} 
+0

. Sağol Eric. – MolonLabe

+0

Rica ederim. – Moritz