ios - 为什么数组在附加元素后返回 nil?

标签 ios json swift model-view-controller swifty-json

我正在尝试使用 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/

相关文章:

ios - UIAutomation 获取 View

java - 错误检查对象为空

ios - 如何防止未初始化数据的快速 CoreData 崩溃

java - 有没有某种方法可以为嵌套在 Jackson 的可选类型中的类型指定自定义反序列化器?

python - 无法使用 Elastic Beanstalk 中的 Flask 读取 JSON 消息

ios - 执行注销segue

ios - 从 swift 2.2 中的 plist 的字典和数组的组合中获取数据

ios - 在其他 Monad 中提取 IO 数据

ios - Autolayout - 如何与最长的项目对齐

ios - 如何将 AppDelegate 的引用发送到 Viewcontroller 子类?