2015-10-16 184 views
1

我正在學習Swift併爲大學創建一個小應用程序。我正在使用Alamofire和SwiftyJSON來處理我的API。試圖用Json數據創建對象

型號產品

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(code = 2,address = 0x7fff5e961ff8)

在我的財產ID的設置。

我檢查我的錯誤日誌xcode,它表明這個setter被稱爲超過25萬次。

任何人都可以知道我在做什麼錯了嗎?

謝謝。

回答

2

您的代碼會導致無限循環,因爲顯式設置器會一次又一次地調用它自己。

在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 
    } 
}