首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字典复制到Swift中的数组中

将字典复制到Swift中的数组中
EN

Stack Overflow用户
提问于 2016-05-27 00:00:11
回答 2查看 2K关注 0票数 0

我试图使用[String:AnyObject]创建一个字典数组。我使用SwiftyJSON将JSON转换为JSON对象,并能够循环遍历每个键和值。下面的代码将不会为每个企业创建一个单独的业务,而是为每个业务中的每个键和价值创建一个单独的业务。目前,JSON有关于id、name、纬度和经度的部分,我希望在字典中为数组中的每个业务提供这些值。

代码语言:javascript
复制
var businesses = [[String:AnyObject]]()

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

如何调整此代码以为每个业务创建单个业务,而不是为每个键和值在数组中创建单个业务。

目前:

代码语言:javascript
复制
businesses[:] = ["id" = 1, "name" = "asdf",...,"id" = 2, "name" = "asdf2"] 

而不是我想要的

代码语言:javascript
复制
businesses[0] = ["id" = 1, "name" = "asdf"]
businesses[1] = ["id" = 2, "name" = "asdf2"]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-27 00:44:12

基本上,您只需要将每个业务的键、值对添加到字典中,然后将该字典添加到数组中。

就像这样:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-05-27 01:27:48

在游乐场上运行这个。

代码语言:javascript
复制
//: 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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37472828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档