2016-04-09 4 views
0

だから、これは私のコードで、私は言って、次の行でエラーが出る「タイプ 『をANYOBJECT』プロトコル 『sequenceType』を準拠していない」:タイプ「ANYOBJECT」プロトコルに準拠していない「sequenceType」

for bar in allBars { 

私は解決策がここ(Type 'AnyObject' does not conform to protocol 'SequenceType')を提案しようとしたが、それはそう、これはいくつかの愚かなもの

func loadBars(){ 
    let path = NSBundle.mainBundle().pathForResource("donnes", ofType: "json") 
    let filename: String = "donnees.json" 

    do{ 
     let data = try NSData(contentsOfFile: path!, options: NSDataReadingOptions.DataReadingMapped) 
     do{ 
      let bars: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) 
      if let bars = bars as? Dictionary<String, AnyObject> { 
       print(bars) 

       let allBars = bars["bars"] 

       for bar in allBars { 

        let nouveauBar = Bar(id: bar["id"], name: bar["name"], adress: bar["adress"], url: bar["url"], image_url: bar["image_url"], tags: bar["tags"], longitude: bar["longitude"], latitude: bar["latitude"]) 

        bars += nouveauBar 
       } 

      } else { 
       print("Level file '\(filename)' is not valid JSON") 
      } 
     }catch { 
      print("Level file '\(filename)' is not valid JSON: \(error)") 
     } 


    }catch { 
     print("Could not load level file: \(filename), error: \(error)") 
    } 

} 

そしてここにあるかもしれない、私はIOSに非常に新しいですバグ

へのXcodeの原因となることもあります.jsonファイルの綿繰り:

{ 
"code": 200, 
"bars": [{ 
    "id": 1627, 
    "address": "100 Rue Saint-Martin, 75004 Paris, France, Opera and Les Halles, Paris", 
    "name": "Caf\u00e9 Beaubourg", 
    "url": "/bar/paris/opera-and-les-halles/cafe-beaubourg", 
    "image_url": "https://prh-wbb-prod.s3.amazonaws.com/generic_640_480/WBB%20holding%20image3_54abcf7d218d1_55b8d2128eabb.jpg", 
    "tags": "Bar, Gay, Cafe, Dinner, Lunch", 
    "latitude": 48.860033826521, 
    "longitude": 2.3508920416641 
}, { 
    "id": 1259, 
    "address": "19 Rue Beaubourg, 75004 Paris, France, Bastille and the Marais, Paris", 
    "name": "Georges", 
    "url": "/bar/paris/bastille-and-the-marais/georges", 
    "image_url": "https://prh-wbb-prod.s3.amazonaws.com/generic_640_480/WBB%20holding%20image4_54abcf6d1f68d_55b8d2015bb13.jpg", 
    "tags": "Serves Food, Great View, Rooftop, Terrace, Rock", 
    "latitude": 48.8603, 
    "longitude": 2.35097 
}] 

}

+0

SWIFTYJSONを使用してjsonを解析する –

答えて

0

代わりの

if let bars = bars as? Dictionary<String, AnyObject> { 

あなたは

if let bars = bars as? [String: AnyObject], 
    let allBars = bars["bars"] as? [[String: AnyObject]] { 

を書くことができますこれは、すでにあなたにallBars配列を与えます。次にコンパイラは、それぞれbarallBars[String: AnyObject](略語はDictionary<String, AnyObject>)の型を持ち、を辞書として使用できることを知っています。あなたはまだidnameのようなプロパティをアンラップする必要があります、あなたは上記の私のコードと同様に行うことができます。

+0

ありがとうございました!私はまだ本当に理解していないが、それは働いたような継ぎ目! :) – Renaud

関連する問題