问题:我正在尝试使用 json 数据创建自定义对象,但是 swift 给了我一个错误,即在 im 循环/向对象添加数据时缺少参数,但在模型中 im 使用可选,所以我对问题所在感到困惑。 最终,这些数据将进入表视图。
我的模型(使用可选):
class FlightDataModel {
var airline: String?
var price: String?
init(airline: String?, price: String?) {
self.airline = airline
self.price = price
}
}
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) {
-----问题区域
-------------let myFlight = FlightDataModel(airline: carrierName["name"] as String)
self.arrayOfFlights[index] = myFlight
//println("(self.arrayOfFlights[index].airline)")
}
}
}
}
}
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
,只需airline
:init(airline: String?) { self.airline = airline }