【发布时间】:2016-12-12 02:47:31
【问题描述】:
我有一个包含一些变量的类,我想通过使用 SwiftyJSON 解析 JSON 输出来创建该类的对象数组(我是 SwiftyJSON 的新手,因此在创建一个时遇到了一些问题)并显示它们使用表格
谁能帮我创建自定义类对象数组。
我的模型类:
class RankDetailsModel
{
var key:String!
var currentMonthRank: Int!
var currentRevenue:Double!
var lastMonthRank:Int!
var lastMonthRevenue:Double!
init?(rank: [String: Any]) {
guard let key = rank["Key"] as? String,
let currentMonthRank = rank["CurrentMonthRank"] as? Int,
let currentRevenue = rank["CurrentRevenue"] as? Int,
let lastMonthRank = rank["LastMonthRank"] as? String,
let lastMonthRevenue = rank["LastMonthRevenue"] as? String
else{
return nil
}
self.key = key;
self.currentMonthRank = currentMonthRank;
self.currentRevenue = Double(currentRevenue);
self.lastMonthRank = Int(lastMonthRank);
self.lastMonthRevenue = Double(lastMonthRevenue);
}
}
JSON 响应:
{ "AfxRank":
[{
"CurrentMonthRank" : 1,
"Key" : "WSM",
"CurrentRevenue" : 28834854,
"LastMonthRevenue": null,
"LastMonthRank": null
},
{
"CurrentMonthRank" : 2,
"Key" : "SAM",
"CurrentRevenue" : 21880000,
"LastMonthRevenue": null,
"LastMonthRank": null
},
{
"CurrentMonthRank" : 3,
"Key" : "CI",
"CurrentRevenue" : 11380000,
"LastMonthRevenue": null,
"LastMonthRank": null
}]
}
我在 VC 中的代码:
var rankArray : [RankDetailsModel] = []
switch(response.result) {
case .success(_):
if let data = response.result.value{
let jsonD = JSON(data)
let dataNew = jsonD.rawString()?.data(using: String.Encoding.utf8)
let jsonFinal = JSON(dataNew)
print(jsonFinal["AfxRank"]) //successfully printing the json array as shown above
rankArray = jsonFinal["AfxRank"].arrayValue as! [RankDetailsModel] //throwing an error 'RankDetailsModel' is not a subtype of JSON
//can I try something like this. (I didnt use SwifyJson and Alamofire in this case)
//if let userDict = json["AfxRank"] as? [String:Any]
// {
// guard let userObject = //RankDetailsModel(rank:userDict) else {
// print("Failed to create user from //dictionary")
// return
// }
}
break
case .failure(_):
print(response.result.error)
break
}
【问题讨论】:
-
您最终需要遍历 JSON 数组,将每个解析对象的数据传递到模型的初始化程序中。您是否尝试过您在评论中提到的方法?
-
@Tony 我尝试将其转换为字典,就像在 cmets 中一样。但它会抛出一个错误,说
JSON doesnt have any member like [String:Any]。将重试并更新正确的错误消息
标签: ios arrays json swift3 swifty-json