2017-01-03 2 views
1

У меня есть пользовательский объект:Как распечатать пользовательские значения объектов JSON после их загрузки?

class SampleJSON { 

    var costDictionary: [String: Any] 
    var airbnbDetails: [String: Any] 
    var airbnbUS: Int 
    var airbnbLocal: Int 

    init(costDictionary: [String: Any], airbnbDetails: [String: Any], airbnbUS: Int, airbnbLocal: Int){ 

    self.costDictionary = costDictionary 
    self.airbnbDetails = airbnbDetails 
    self.airbnbUS = airbnbUS 
    self.airbnbLocal = airbnbLocal 
} 

init(resultsDictionary:[String: Any]){ 

    costDictionary = (resultsDictionary["cost"] as? [String: Any])! 
    airbnbDetails = (costDictionary["airbnb_median"] as? [String: Any])! 
    airbnbUS = (airbnbDetails["USD"] as? Int)! 
    airbnbLocal = (airbnbDetails["CHF"] as? Int)! 
} 

Я пытаюсь распечатать значение объектов после того, как они были загружены:

static func downloadAllTableViewData(urlExtension:String) -> [SampleJSON] { 

    var sampleJSON = [SampleJSON]()//array of custom object 

    let usm = UrlSessionNetworkManager.sharedManager 

    if let jsonDictionary = usm.parseJSONFromData(urlExtension:urlExtension) 

    { 
     let resultDictionaries = jsonDictionary["result"] as! [[String : Any]] 
     for resultsDictionary in resultDictionaries {// enumerate through dictionary 
     let nomadInfo = SampleJSON(resultsDictionary: resultsDictionary) 

     sampleJSON.append(nomadInfo) 
     } 
    } else { 
     print("Error: Cannot retrieve JSON Data") 
    } 

    print(sampleJSON) //Print Data here 

    return sampleJSON 
    } 
} 

Я пытаюсь напечатать все значения пользовательского объекта, но когда я пытаюсь использовать печать (sampleJSON) все я получаю распечатываются на консоли

MyProject.SampleJSON

Любая помощь приветствуется!

+0

Я думаю, вы должны напечатать 'resultsDictionary' вместо этого перед' init' вашего собственного класса. – JuicyFruit

ответ

0

Добавить переменную description в ваш класс SampleJSON и сделать его соответствие CustomStringConvertible. Например:

class SampleJSON: CustomStringConvertible { 

    var costDictionary: [String: Any] 
    var airbnbDetails: [String: Any] 
    var airbnbUS: Int 
    var airbnbLocal: Int 

    init(costDictionary: [String: Any], airbnbDetails: [String: Any], airbnbUS: Int, airbnbLocal: Int){ 

    self.costDictionary = costDictionary 
    self.airbnbDetails = airbnbDetails 
    self.airbnbUS = airbnbUS 
    self.airbnbLocal = airbnbLocal 
    } 

    init(resultsDictionary:[String: Any]){ 

    costDictionary = (resultsDictionary["cost"] as? [String: Any])! 
    airbnbDetails = (costDictionary["airbnb_median"] as? [String: Any])! 
    airbnbUS = (airbnbDetails["USD"] as? Int)! 
    airbnbLocal = (airbnbDetails["CHF"] as? Int)! 
    } 

    var description: String { 
    return "SampleJSON(cost: \(self.costDictionary), airbnb: \(self.airbnbDetails), airbnb US: \(self.airbnbUS), airbnb local: \(self.airbnbLocal))" 
    } 
} 
+0

Это сработало! Хотел бы я знать об этом раньше. Спасибо за вашу помощь! – SwiftyJD

Смежные вопросы