Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么我会迅速出错?缺少参数'的参数;价格';随时待命_Swift - Fatal编程技术网

Swift 为什么我会迅速出错?缺少参数'的参数;价格';随时待命

Swift 为什么我会迅速出错?缺少参数'的参数;价格';随时待命,swift,Swift,问题:我试图用json数据创建一个自定义对象,但是swift给了我一个错误,即在我循环/向对象添加数据时缺少一个参数,但是在模型中,我使用了一个可选参数,所以我不知道问题出在哪里。最终,这些数据将进入表视图 我的型号(使用选项): alamofire API请求 request(qpxRequest).responseJSON { (request, response, json, error) -> Void in if response != nil {

问题:我试图用json数据创建一个自定义对象,但是swift给了我一个错误,即在我循环/向对象添加数据时缺少一个参数,但是在模型中,我使用了一个可选参数,所以我不知道问题出在哪里。最终,这些数据将进入表视图

我的型号(使用选项):

alamofire API请求

 request(qpxRequest).responseJSON { (request, response, json, error) -> Void in
        if response != nil {
            //NSLog("%@", response!)
        }

        if json != nil {
            if let myJSON = json as? [String:AnyObject] {
                if let trips = myJSON["trips"] as? [String:AnyObject] {
                    if let data = trips["data"] as? [String:AnyObject] {
                        if let carriers = data["carrier"] as? [[String:String]] {

                            for (index, carrierName) in enumerate(carriers) {
//----问题领域-------------


price
init
构造函数的参数。即使参数是可选类型,也必须提供参数。如果您没有它的值,可以给它
nil

let myFlight = FlightDataModel(airline: carrierName["name"] as String, price: nil)

如果希望
price
默认为
nil
,如果未提供该参数,则执行以下两种操作之一:

  • 您可以在初始值设定项中为
    price
    提供默认值:

    init(airline: String?, price: String? = nil) {
        self.airline = airline
        self.price = price
    }
    
  • 您可以提供第二个单独的
    init
    ,它只需要
    航空公司

    init(airline: String?) {
        self.airline = airline
    }
    

  • 所以我添加了这一点,也没有错误:致命错误:数组索引超出范围。在下一行代码中,从技术上讲,这是另一个问题。数组是如何声明的?您可能只想使用
    append
    将航班添加到
    arrayOfFlights
    .var arrayOfFlights:[FlightDataModel]=[FlightDataModel]()
    arrayOfFlights.append(myFlight)
    那么在输入价格数据时我是否也将airline:nil设置为空?然后访问以下数据:myFlight[0]。price和myFlight[0]。航空公司?
    init(airline: String?, price: String? = nil) {
        self.airline = airline
        self.price = price
    }
    
    init(airline: String?) {
        self.airline = airline
    }