I have a model Class, where I need to append values from JSON, I'm using Alamofire
I have tried the below method, but the values are not added properly.
Here is the Model Class
class ImageMJ {
var assignment__assignment_name:String?
var assignment__file_up:String?
init(assignment__assignment_name: String?, assignment__file_up: String?) {
self.assignment__assignment_name = assignment__assignment_name
self.assignment__file_up = assignment__file_up
}
}
And the fun which I used
var imageDetailsArrayMJ = [ImageMJ]()
Alamofire.request(urls, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
if((response.result.value) != nil) {
let jsonVar = JSON(response.result.value!)
// print(jsonVar)
if let items = jsonVar["assisgnments"].array {
for item in items {
if let ids = item["assignment__assignment_name"].string {
print("IDS == \(ids)")
self.imageDetailsArrayMJ.append(ImageMJ(assignment__assignment_name: ids as! String, assignment__file_up: nil))
}
if let ifd = item["assignment__file_up"].string {
self.imageDetailsArrayMJ.append(ImageMJ(assignment__assignment_name: nil, assignment__file_up: ifd as! String))
}
}
}
My JSON is
{
"assisgnments": [
{
"assignment__file_up": "media/"
"assignment__assignment_name": "MAX PAYNE",
},
{
"assignment__file_up": "media/assignments/Calendar-master.zip",
"assignment__assignment_name": "Doctor",
},
{
"assignment__assignment_desc": "EA SPORTS FIFA 20",
"assignment__file_up": "media/assignments/Screen_Shot_2019-07-08_at_10.38.49_AM.png",
}
]}
I need like this assignment__assignment_name = "MAX PAYNE", assignment__file_up = "media/assignments/Calendar-master.zip"
Rather than creating a new item for each dictionary value you have to create one item in each iteration.
As the properties are optional anyway you don't need the checks (nor the type casts)
if let items = jsonVar["assisgnments"].array {
for item in items {
let ids = item["assignment__assignment_name"].string
let ifd = item["assignment__file_up"].string
self.imageDetailsArrayMJ.append(ImageMJ(assignment__assignment_name: ids, assignment__file_up: ifd))
}
}
You are encouraged to drop SwiftyJSON in favor of Codable
and to get rid of those ugly objective-c-ish underscores.