[英]how to use a property from a class to another class in swift
我有這樣的模型類
import Foundation
import SwiftyJSON
class SpecificCategoryJSON {
var _product_id: Int?
var _product_title: String?
var _product_sku: String?
var _product_image: URL?
init(items: JSON){
self._product_id = items["product_id"].int
self._product_title = items["product_title"].stringValue
self._product_sku = items["product_sku"].stringValue
let post_imgAA = items["product_image"].arrayValue
for itemsIMG in post_imgAA {
self._product_image = itemsIMG["guid"].URL
}
}
var product_id: Int {
if _product_id == nil {
_product_id = 0
}
return _product_id!
}
var product_title: String {
if _product_title == nil {
_product_title = ""
}
return _product_title!
}
var product_sku: String {
if _product_sku == nil {
_product_sku = ""
}
return _product_sku!
}
var product_image: URL {
if _product_image == nil {
let myURL = "http://www.clker.com/cliparts/d/L/P/X/z/i/no-image-icon-hi.png"
let noImage: URL = URL(string: myURL)!
_product_image = noImage
}
return _product_image!
}
}
我想使用product_id作為參數發送,以使用Alamofire發出POST請求。 這是POST請求,我將product_id保持為靜態。
class ProductDetailsManager {
//........
func printPublicGists() -> Void {
let url: String = "http://xxx/get_product_informations/"
let parameter = ["product_id": 33]
Alamofire.request(url, method: .post, parameters: parameter, encoding: URLEncoding.default, headers: nil)
.responseJSON { (response) in
guard response.result.error == nil else {
print(response.result.error!)
return
}
guard let value = response.result.value else {
print("no product to show")
return
}
print(value)
}
}
//.......
}
我想從類SpecificCategoryJSON獲取product_id並在類ProductDetailsManager中使用它來進行調用。 我該怎么辦, 繼承 ? 覆蓋 ? UserDefaults.standard.set ? 請幫忙 。
也許我誤解了這個問題,但你應該實例化你的SpecificCategoryJSON
類並訪問它的屬性:
func printPublicGists() -> Void {
let url: String = "http://xxx/get_product_informations/"
let cat = SpecificCategoryJSON(items: someJSON)
let parameter = ["product_id": cat.product_id]
// ....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.