如何使用 swift 在 class 模型中获取对象数组
how to fetch array of objects in class model using swift
样本json数据是
[
{
"id": "244",
"name": "PIZZAS",
"subcategory": [
{
"id": "515",
"name": "MARGARITA",
"description": "Cheese and Tomato",
"image": "",
"icon": "",
"coupon": "1",
"order": "1",
"aname": "",
"options": "2",
"item": [
{
"id": "1749",
"name": "9 Inch Thin & Crispy Margarita",
"description": "",
"price": "3.40",
"coupon": "1",
"image": "",
"options": "2",
"order": "1",
"addon": "495",
"aname": "",
"icon": ""
}]
}]
}]
我的 Json 数据不准确。有许多子类别和项目。我这里只post示例数据
我可以将主要项目提取到 class 模型中。但是如何获取子类别数据以及项目数据。因为它是一个对象数组。
我创建了这样的 class 模型
子类别class
import Foundation
class SubCategory {
var id: Int?
var name: String?
var desc: String?
var image: String?
var coupon: Int?
var icon: String?
var order: Int?
var aname: String?
var options: Int?
var items:Array<AnyObject>?
init(id:Int?,name:String?,desc:String?,image:String?,coupon:Int?,icon:String?,order:Int?,aname:String?,options:Int?,items:Array<AnyObject>?){
self.id = id
self.name = name
self.desc = name
self.image = image
self.coupon = coupon
self.icon = icon
self.order = order
self.aname = aname
self.options = options
self.items = items
}
}
之后,我将子类别数据发送到 class 模型。但主要项目数据正在运行。我知道我在这里犯了错误。但是我怎样才能进入子类别部分
//subcategory section
var subcategories = [SubCategory]()
for(_,content) in json{ ////here instead of json what should be written so that i can get the subcategory value
let subcategory = SubCategory(id: Int(content["id"].stringValue),
name: content["name"].string,
desc: content["desc"].string,
image: content["image"].string,
coupon: Int(content["coupon"].stringValue),
icon: content["icon"].string,
order: Int(content["order"].stringValue),
aname: content["aname"].string,
options: Int(content["options"].stringValue),
items:content["items"].arrayObject)
subcategories.append(subcategory)
}
for subcategory in subcategories {
print(subcategory.name)
print(subcategory.desc)
print(subcategory.id)
}
print(subcategories.count)
我想要所有子类别数据以及项目数据到我的模式 class。执行情况如何?
您只需要 JSON 数组的第一个元素中的 "subcategory" 对象,不是吗?
for (_, item) in json {
//do something with item.id, item.name
for (_, subcategory) in item["subcategory"] {
let subcategory = SubCategory(
id: Int(subcategory ["id"].stringValue),
name: subcategory ["name"].string,
desc: subcategory ["desc"].string,
image: subcategory ["image"].string,
coupon: Int(subcategory ["coupon"].stringValue),
icon: subcategory ["icon"].string,
order: Int(subcategory ["order"].stringValue),
aname: subcategory ["aname"].string,
options: Int(subcategory ["options"].stringValue),
items: subcategory ["items"].arrayObject
)
subcategories.append(subcategory)
}
//...
}
.append
太恶心了。在这种情况下,有一个更好的方法:
for (_, item) in json {
//do something with item.id, item.name
subcategories = item.1["subcategory"].map{ subcategory in
return SubCategory(
id: Int(subcategory ["id"].stringValue),
name: subcategory ["name"].string,
desc: subcategory ["desc"].string,
image: subcategory ["image"].string,
coupon: Int(subcategory ["coupon"].stringValue),
icon: subcategory ["icon"].string,
order: Int(subcategory ["order"].stringValue),
aname: subcategory ["aname"].string,
options: Int(subcategory ["options"].stringValue),
items: subcategory ["items"].arrayObject
)
}
}
样本json数据是
[
{
"id": "244",
"name": "PIZZAS",
"subcategory": [
{
"id": "515",
"name": "MARGARITA",
"description": "Cheese and Tomato",
"image": "",
"icon": "",
"coupon": "1",
"order": "1",
"aname": "",
"options": "2",
"item": [
{
"id": "1749",
"name": "9 Inch Thin & Crispy Margarita",
"description": "",
"price": "3.40",
"coupon": "1",
"image": "",
"options": "2",
"order": "1",
"addon": "495",
"aname": "",
"icon": ""
}]
}]
}]
我的 Json 数据不准确。有许多子类别和项目。我这里只post示例数据
我可以将主要项目提取到 class 模型中。但是如何获取子类别数据以及项目数据。因为它是一个对象数组。 我创建了这样的 class 模型
子类别class
import Foundation
class SubCategory {
var id: Int?
var name: String?
var desc: String?
var image: String?
var coupon: Int?
var icon: String?
var order: Int?
var aname: String?
var options: Int?
var items:Array<AnyObject>?
init(id:Int?,name:String?,desc:String?,image:String?,coupon:Int?,icon:String?,order:Int?,aname:String?,options:Int?,items:Array<AnyObject>?){
self.id = id
self.name = name
self.desc = name
self.image = image
self.coupon = coupon
self.icon = icon
self.order = order
self.aname = aname
self.options = options
self.items = items
}
}
之后,我将子类别数据发送到 class 模型。但主要项目数据正在运行。我知道我在这里犯了错误。但是我怎样才能进入子类别部分
//subcategory section
var subcategories = [SubCategory]()
for(_,content) in json{ ////here instead of json what should be written so that i can get the subcategory value
let subcategory = SubCategory(id: Int(content["id"].stringValue),
name: content["name"].string,
desc: content["desc"].string,
image: content["image"].string,
coupon: Int(content["coupon"].stringValue),
icon: content["icon"].string,
order: Int(content["order"].stringValue),
aname: content["aname"].string,
options: Int(content["options"].stringValue),
items:content["items"].arrayObject)
subcategories.append(subcategory)
}
for subcategory in subcategories {
print(subcategory.name)
print(subcategory.desc)
print(subcategory.id)
}
print(subcategories.count)
我想要所有子类别数据以及项目数据到我的模式 class。执行情况如何?
您只需要 JSON 数组的第一个元素中的 "subcategory" 对象,不是吗?
for (_, item) in json {
//do something with item.id, item.name
for (_, subcategory) in item["subcategory"] {
let subcategory = SubCategory(
id: Int(subcategory ["id"].stringValue),
name: subcategory ["name"].string,
desc: subcategory ["desc"].string,
image: subcategory ["image"].string,
coupon: Int(subcategory ["coupon"].stringValue),
icon: subcategory ["icon"].string,
order: Int(subcategory ["order"].stringValue),
aname: subcategory ["aname"].string,
options: Int(subcategory ["options"].stringValue),
items: subcategory ["items"].arrayObject
)
subcategories.append(subcategory)
}
//...
}
.append
太恶心了。在这种情况下,有一个更好的方法:
for (_, item) in json {
//do something with item.id, item.name
subcategories = item.1["subcategory"].map{ subcategory in
return SubCategory(
id: Int(subcategory ["id"].stringValue),
name: subcategory ["name"].string,
desc: subcategory ["desc"].string,
image: subcategory ["image"].string,
coupon: Int(subcategory ["coupon"].stringValue),
icon: subcategory ["icon"].string,
order: Int(subcategory ["order"].stringValue),
aname: subcategory ["aname"].string,
options: Int(subcategory ["options"].stringValue),
items: subcategory ["items"].arrayObject
)
}
}