在附加数据之前在 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)")
var goingArray = [JSON]()
goingArray = messageArray![0]["going_arr"].arrayValue
print("going array 0th index all data : \(goingArray)")
上面一行的输出
print("going array 0th index data :\(goingArray[0])")
print("going array 0th index user name data :\(goingArray[0]["name"])")
print("going array all user name :\(goingArray.map({$0["name"].stringValue}))")
}
}
}
最佳答案
如果我没理解错的话,你的问题是你没有成功解析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/