我正在尝试使用 JSON 作为 MVC 模型,为此我做了:
// Country.swift
import SwiftyJSON
class Country {
var code: String!
var dialCode: Int!
var name: String!
init(json: JSON) {
for i in 0...json["countries"].count - 1 {
if let code = json["countries"][i]["code2"].string, dialCode = json["countries"][i]["dialCode"].string, name = json["countries"][i]["name"].string {
self.code = code
self.dialCode = Int(dialCode)
self.name = name
}
}
}
}
然后在我的 ViewController 中我做了:
var countries = [Country]()
Alamofire.request(.POST, "\(property.host)\(property.getCountryList)", parameters: parameters, encoding: .JSON).responseJSON { response in
do {
let json = JSON(data: response.data!)
countries.append(Country(json: json))
} catch _ {
}
}
但是我有一个问题。当我打印 Country.swift 文件中的值时,我得到了结果,但是当我 print(countries)
时它返回我 [Project.Country]
并且 count 返回 1。什么是问题?我做错了什么?
最佳答案
除非我误解了这不是您想要的行为吗?
countries
是一个 Project.Country
数组,Swift 通过打印 [Project.Country]
来表示(一个包含一个实例的数组)你类(class)的)。没有问题。如果您想证明数组包含 Project.Country
,您应该打印该类的一个属性:print(countries.first.name)
编辑:问题是您将国家/地区的 JSON
数组传递给单个 init 方法,该方法只是为每个国家/地区设置其自身的属性,而不是为每个国家/地区创建实例。因此您只返回一个实例
关于ios - 为什么数组在附加元素后返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291114/