尝试使用 Json 数据创建对象
Trying to create an object with Json data
我正在学习 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 行收到一个错误:
Thread 1: EX_BAD_ACCESS (code=2, address=0x7fff5e961ff8)
在我的 属性 id 的 setter 中。
我在xcode查看我的错误日志,显示这个setter被调用了超过25万次
谁能知道我做错了什么?
谢谢。
您的代码导致无限循环,因为显式 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
}
}
我正在学习 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 行收到一个错误:
Thread 1: EX_BAD_ACCESS (code=2, address=0x7fff5e961ff8)
在我的 属性 id 的 setter 中。
我在xcode查看我的错误日志,显示这个setter被调用了超过25万次
谁能知道我做错了什么?
谢谢。
您的代码导致无限循环,因为显式 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
}
}