2016-05-27 2 views
0

[[String:AnyObject]]を使用して辞書の配列を作成しようとしています。私はSwiftyJSONを使用してJSONオブジェクトをJSONオブジェクトに変換し、各キーと値をループすることができました。以下のコードは、ビジネスごとに個別のビジネスを作成するのではなく、ビジネスのキーと価値ごとに個別のビジネスを作成します。現在、JSONにはID、名前、緯度、経度のセクションがあり、配列の各ビジネスのディクショナリにこれらの値がそれぞれ必要です。私は、各キーと値の配列に代わり、個々の事業の各事業の個別事業を作成するには、このコードを調整するにはどうすればよいSwiftの配列に辞書をコピーする

var businesses = [[String:AnyObject]]() 

for business in json["businesses"]!.array! { 
    for (key,value) in business { 
     let value1 = value.stringValue 
     businesses.append([key:value1]) 
    } 
} 

現在:代わりに、私は

businesses[0] = ["id" = 1, "name" = "asdf"] 
businesses[1] = ["id" = 2, "name" = "asdf2"] 

答えて

0

Basicllyである何をしたいの

businesses[:] = ["id" = 1, "name" = "asdf",...,"id" = 2, "name" = "asdf2"] 

、あなただけの、キーを追加するために、辞書に各ビジネス環境のための値のペアを必要とし、その辞書を追加あなたの配列に。このような

何か:

var businesses = [[String: AnyObject]] 
     for business in json["businesses"]!.array! { 
      var dic = [String: AnyObject] 
      for (key,value) in business { 
       let value1 = value.stringValue 
       dic [key] = value1 
      } 
      businesses.append(dic) 
     } 

さて、あなたはJSONデータを提供しなかったので、私はコードの100%をテストすることができませんでしたが、これは一般的な考え方です。

+0

これは完璧でした。すぐに私の問題を解決しました。編集のみ行3です:var dic = [文字列:AnyObject]() –

+0

@ AlecO'Connor最も歓迎、ハッピーコーディング –

0

これをプレイグラウンドで実行します。

//: Playground - noun: a place where people can play 
import UIKit 

// Simulating JSON 
class sim { 
    let s: String 
    init(_ s:String) {self.s = s} 
    var stringValue:String {return s} 
} 
let simulatingJSONThings = [ 
    ["id":sim("3"), "name":sim("Alice"), "lat":sim("123.45"), "lng":sim("567.89")], 
    ["id":sim("4"), "name":sim("Bob"), "lat":sim("123.45"), "lng":sim("567.89")], 
    ["id":sim("5"), "name":sim("Conny"), "lat":sim("123.45"), "lng":sim("567.89")], 
] 

// #1 Yours 
do { 
    var businesses = [[String:AnyObject]]() 
    for business in simulatingJSONThings { 
     for (key,value) in business { 
      let value1 = value.stringValue 
      businesses.append([key:value1]) 
     } 
    } 
    businesses 
} 

// #2 Answer 
do { 
    var businesses = [[String:AnyObject]]() 
    for business in simulatingJSONThings { 
     var b = [String:String]() 
     for (key,value) in business { 
      let value1 = value.stringValue 
      b[key] = value1 
     } 
     businesses.append(b) 
    } 
    businesses 
} 
関連する問題