I have a class with some variables and I want to create an array of objects of this class by parsing the JSON output using SwiftyJSON(I'm new to SwiftyJSON and so facing some problem while creating one) and display them using a Table
Can someone help me in creating the array of custom class objects.
My Model class:
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 response:
{ "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
}]
}
My Code in 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 doesnt have any member like [String:Any]. Will try again and update the correct error message