2017-01-04 2 views
1

У меня есть класс модели, как этоткак использовать свойство из класса в другой класс в быстрой

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 для отправки в качестве параметра, чтобы сделать запрос POST используя Alamofire. Вот 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) 

    } 

    } 
//....... 
} 

Я хочу, чтобы получить product_id из класса SpecificCategoryJSON и использовать его в классе ProductDetailsManager, чтобы сделать звонок. Что делать, inherit? override? UserDefaults.standard.set? Пожалуйста помоги .

ответ

0

Может быть, я неправильно понял вопрос, но вы должны создать экземпляр класса SpecificCategoryJSON и получить доступ к его собственность:

func printPublicGists() -> Void { 
    let url: String = "http://xxx/get_product_informations/"  
    let cat = SpecificCategoryJSON(items: someJSON) 

    let parameter = ["product_id": cat.product_id] 

    // .... 
} 
+0

в этом случае я должен отправить некоторое значение в ** ** пунктов, но я не призываю любой ** JSON ** ответ на ** SpecificCategoryJSON ** в этом ** классе **, то есть в другом ** классе ** –

+0

Итак, вы должны найти способ уведомлять ** ProductDetailsManager **, когда новые ** элементы JSON * *, а затем создать экземпляр ** SpecificCategoryJSON ** с ним. Вы можете использовать NSNotifications, KVO или что-нибудь еще. –