我正在研究Swift并为大学创建一个小应用程序。我正在使用Alamofire和SwiftyJSON来处理我的API。
模型产品
class Products {
var id: Int {
get {
return self.id
}
set {
self.id = newValue
}
}
var name: String {
get {
return self.name
}
set {
self.name = newValue
}
}
var description: String {
get {
return self.description
}
set {
self.description = newValue
}
}
var price: String {
get {
return self.price
}
set {
self.price = newValue
}
}
init(id: Int, name: String, description: String, price: String) {
self.id = id
self.name = name
self.description = description
self.price = price
}
}
我的ViewController
import UIKit
import Alamofire
import SwiftyJSON
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.GET, Urls.menu).responseJSON { request in
if let json = request.result.value {
let data = JSON(json)
for (_, subJson): (String, JSON) in data {
let product = Products(id: subJson["id"].int!, name: subJson["name"].string!, description: subJson["description"].string!, price: subJson["price"].string!)
}
}
}
}
}
当我尝试运行我的代码时,我的模型产品中收到错误,第14行:
线程1:EX_BAD_ACCESS(代码= 2,地址= 0x7fff5e961ff8)
在我的属性ID的设置器中。
我在xcode中检查我的错误日志,它显示这个setter被调用超过25万次。
谁能知道我做错了什么?
谢谢。
答案 0 :(得分:2)
您的代码会导致无限循环,因为显式setter会一次又一次地调用它。
在Swift属性中隐式合成,只需声明它们即可。
class Products {
var id: Int
var name: String
var description: String
var price: String
init(id: Int, name: String, description: String, price: String) {
self.id = id
self.name = name
self.description = description
self.price = price
}
}