gpt4 book ai didi

json - 没有使用 swiftyjson 和 alamofire 在 swift 4 中获取模型类数组值

转载 作者:行者123 更新时间:2023-11-28 14:36:43 25 4
gpt4 key购买 nike

在附加数据之前在 View Controller 中我得到了带有正确数据的 messegearray

但是,当我将消息数组数据附加到事件中时,数组数据却不可用

我得到了简单的事件名称,事件 ID,但映射到数组创建问题

我认为我在模型类中初始化 going 数组时犯了一些错误

请让我知道我在哪里做错了。我是第一次尝试使用 MVC 和 swiftyjson

这是模型课的总结

import Foundation
import SwiftyJSON

class eventModel{

var eventId = String()
var eventName = String()
var eventUserGoing = [userGoingArray]()

init()
{}

init(json:JSON) {

self.eventId = json["event_id"].stringValue
self.eventName = json["event_name"].stringValue
self.eventUserGoing = [userGoingArray(goingArrayJson:json["going_arr"])]

print("event going model array \(self.eventUserGoing[0])")


for i in 0..<eventUserGoing.count{

print("user going array \(i) th data \(eventUserGoing[i])")
}
}


}

class userGoingArray{

//var goingArray = [JSON]()
var userName = String()
var userGender = String()

init()
{}

init(goingArrayJson:JSON) {


self.userName = goingArrayJson["name"].stringValue

self.userGender = goingArrayJson["gender"].stringValue

}



}

Controller 类总结

1.eventModel类型的全局事件变量

var events = [eventModel]()



override func viewDidLoad() {
super.viewDidLoad()


fetchSwiftData()

}

2.这是使用带 alamofire 的 swiftyjson pods 获取 json 数据的代码

func fetchSwiftData(){

let urlString = "http://rednwhite.co.in/webservices/event_details.php?user_id=22&club_id=1&selected_id=20"
Alamofire.request(urlString, method: .get).validate().responseJSON { (response) -> Void in

if let value = response.result.value{

let json = JSON(value)


}

let messageArray = json["message"].array


for arr in messageArray!{

self.events.append(eventModel(json:arr ))
}

print("Message Array O th index data event name \(messageArray![0]["event_name"].stringValue)")

Result:Message Array O th index data event name greeshma night

print("user going 0th index data object \(messageArray![0]["going_arr"].arrayValue)")

上面一行的输出 enter image description here

var  goingArray = [JSON]()

goingArray = messageArray![0]["going_arr"].arrayValue
print("going array 0th index all data : \(goingArray)")

上面一行的输出

enter image description here

 print("going array 0th index data :\(goingArray[0])")

上面一行的输出 enter image description here

 print("going array 0th index user name data :\(goingArray[0]["name"])")

enter image description here

print("going array all user name :\(goingArray.map({$0["name"].stringValue}))")

以上行的输出 enter image description here

        }
}
}

最佳答案

如果我没理解错的话,你的问题是你没有成功解析Json。您必须将您的模型实现为这样的结构:

struct eventModel {
var eventId = String?
var eventName = String?
var eventUserGoing = [userGoingModel]?

init(){
self.eventId = ""
self.eventName = ""
self.eventUserGoing = []
}

init(json: [String: Any]) {
if let evId = json["event_id"] as? String {
self.eventId = evId
}
if let evName = json["event_name"] as? String {
self.eventName = evName
}
if let evUserGoing = json["going_arr"] as? [[String: Any]] {
for evUser in evUserGoing {
let userGoing = userGoingModel(json: evUser)
self.eventUserGoing.append(userGoing)
}
}
}
}

struct userGoingModel {
var userName = String?
var userGender = String?

init() {
self.userName = ""
self.userGender = ""
}

init(json : [String: Any]) {
if let uName = json["name"] as? String {
self.userName = uName
}
if let uGender = json["gender"] as? String {
self.userGender = uName
}
}
}

以及您的要求:

Alamofire.request(urlString, method: .get).validate().responseJSON { (response) -> Void in
if let value = response.data {
do {
let json = try JSON(data: data)
if let dictionnary = json.dictionnaryObject {
if let messageArray = dictionnary["message"] as? [[String: Any]] {
for arr in messageArray {
self.events.append(eventModel(json: arr))
}
}
} catch {
print("cannot convert to Json")
}
}
}

希望它能帮助你找到错误。

关于json - 没有使用 swiftyjson 和 alamofire 在 swift 4 中获取模型类数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50853036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com