2016-02-09 80 views
0

我試圖用JSON工作的MVC模式,爲了這個,我做的事:爲什麼數組在追加到元素後返回nil?

// Country.swift 
import SwiftyJSON 

class Country { 
    var code: String! 
    var dialCode: Int! 
    var name: String! 

    init(json: JSON) { 
      for i in 0...json["countries"].count - 1 { 
      if let code = json["countries"][i]["code2"].string, dialCode = json["countries"][i]["dialCode"].string, name = json["countries"][i]["name"].string { 
       self.code = code 
       self.dialCode = Int(dialCode) 
       self.name = name 
      } 
     } 
    } 
} 

,後來在我的ViewController我做的:

var countries = [Country]() 

Alamofire.request(.POST, "\(property.host)\(property.getCountryList)", parameters: parameters, encoding: .JSON).responseJSON { response in 
    do { 
     let json = JSON(data: response.data!) 
     countries.append(Country(json: json)) 
    } catch _ { 

    } 
} 

,但我有一個問題。當我在Country.swift文件中打印值時,我得到結果,但當我print(countries)它返回我[Project.Country]並計數返回1.是什麼問題?我做錯了什麼?

+0

試打印照片(國家[0]); –

+0

@KishoreKumar同樣的事 –

回答

1

除非我誤解了這是不是你想要的行爲?

countriesProject.Country的數組,其中swift代表打印[Project.Country](包含您的類的一個實例的數組)。沒有問題。如果你想證明的是,數組包含一個Project.Country你應該打印類的屬性之一:print(countries.first.name)

編輯:問題是你傳遞一個JSON陣列國家到一個init方法,這是剛剛設置的屬性對於每個國家而言,並不是爲每個國家創建一個實例。因此,你只有一個實例返回

+0

是的,你是對的。另外,我可以使用'countries [0] .name',但使用它並不舒服。我怎樣才能得到國家數組?當我嘗試打印'countries.count'時,它會返回我1 –

+0

我猜你期望通過請求返回多個國家/地區?在你的'Project.Country'初始化程序中,你只在'for'循環中創建一個實例,因爲你正在爲同一個實例設置一次變量 - 不會創建多個! – DJB

+0

是的。有246個國家。所以,我期待'246' –

0

您的問題是你逝去的國家數組初始化方法被稱爲只有一次你都必須做喜歡這裏

class Country { 
    var code: String! 
    var dialCode: Int! 
    var name: String! 

    init(json: JSON) { 
      if let code = json["code2"].string, dialCode = json["dialCode"].string, name = json["name"].string { 
       self.code = code 
       self.dialCode = Int(dialCode) 
       self.name = name 
      } 
    } 
} 

環這裏

Alamofire.request(.POST, "", parameters: nil, encoding: .JSON).responseJSON { response in 

       if let jsonResponse = response.result.value{ 
        let json = JSON(jsonResponse) 

        for countriesJSON in json["countries"].arrayValue{ 
         self.countries.append(Country(json: countriesJSON)) 
        } 

        print(self.countries.count) 
       } 
      } 
相關問題