将 SwiftyJSON 用于 Swift 3.1 的子数组
Posted
技术标签:
【中文标题】将 SwiftyJSON 用于 Swift 3.1 的子数组【英文标题】:Using SwiftyJSON for subarray with Swift 3.1 【发布时间】:2017-05-20 18:14:34 【问题描述】:我有一个 json 数据。我以前从未使用过 SwiftyJSON。我是第一次尝试。
我的 json 是这样的:
[
"Id": 1,
"Name": "A",
"SubNames": [
"SubId": 1,
"SubName": "A1"
,
"SubId": 2,
"SubName": "A2"
]
,
"Id": 2,
"Name": "B",
"SubNames": [
"SubId": 1,
"SubName": "B1"
,
"SubId": 2,
"SubName": "B2"
]
]
我可以处理名称并附加一个数组。但我无法处理子名称。我尝试了一些东西,但不幸的是没有用。我想将 SubNames 附加一个数组。这个数组会是这样的:
[["A1","A2"],["B1","B2"]]
我使用这个代码:
let json = JSON(data: data!)
for (_,subJson):(String, JSON) in json
self.names.append(subJson["Name"].stringValue
【问题讨论】:
使用 swiftyjson 显示你为这个 json 结构准备的模型。 @AnilKumar 我编辑了我的问题。这够了吗?谢谢。 @AnilKumar 对不起,我不明白你能解释一下吗? 你应该为此创建两个模型,一个模型包含“Id”:intType,“Name”:stringType,“SubNames”:[subNames],另一个是包含“SubId”的subNames : intType, "SubName": stringType @AnilKumar 谢谢你的解释。我没有使用之前的模型,因此我不知道如何使用。如果你有时间可以给我看看吗?或者你可以给我一个源链接? 【参考方案1】:试试这个来访问那些字段,你不应该在这里做data!
guard let `data` = data else
//no data handling
return
let dataArray = JSON(data: data).arrayValue
var arrayOfAllSubnames: [[String]] = [[]]
for object in dataArray
var arrayOfSubnames: [String] = []
if let subnames = object["SubNames"].array
for subname in subnames
//here you get `"SubId": 2, "SubName": "B2"` object
let subnameValue = subname["SubName"].stringValue
arrayOfSubnames.append(subnameValue)
arrayOfAllSubnames.append(arrayOfSubnames)
【讨论】:
谢谢。但我的问题集中在数组 SubName 中,如下所示:[["A1","A2"],["B1","B2"]]【参考方案2】:Swift 3.0
1) 首先声明子名称数组。
var subNameArray: [[String]] = []
2) 您可以访问和存储这些对象,如下所示。
let json = JSON(data: data!).arrayValue
for item in json
var tempArray: [String] = []
let name = item["Name"].stringValue
for subNameItem in items["SubNames"].arrayValue
tempArray.append(subNameItem["SubName"].stringValue)
subNameArray.append(tempArray)
【讨论】:
谢谢,但首先@JuicyFruit 回答了。我会接受他的,对不起。 不是问题,很高兴您得到了最终答案。继续提问以上是关于将 SwiftyJSON 用于 Swift 3.1 的子数组的主要内容,如果未能解决你的问题,请参考以下文章
SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中
使用 swiftyjson 和 swift 解析嵌入的 json
使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象
SwiftyJSON 不工作 / Swift 1.2 SwiftyJSON 文件