2016-08-02 3 views
1

プロパティリストにアクセスする方法:以下に示すように、私は大陸、国、およびランダムな事実とプロパティリストを作成している

property list

は、私は簡単に十分なプロパティリストからトップレベルのキーにアクセスすることができました:

if let path = NSBundle.mainBundle().pathForResource("countryData", ofType: "plist") { 
      dict = NSDictionary(contentsOfFile: path) 
     } 
countries += dict!.allKeys as! [String] 

バヌアツの配列の2番目の要素にアクセスしたい場合、物事が崩れます。私はobjectForKeyは、国の辞書を取得し、再び国の配列を取得するobjectForKeyを使用すると思います。しかしこれまでのところ、それはうまくいきませんでした。すべての...

答えて

3
if let path = NSBundle.mainBundle().pathForResource("countryData", ofType: "plist") { 
      dict = NSDictionary(contentsOfFile: path) 

      if let australia = dict["australia"] as? [String:AnyObject]{ 
       // access the second element's property here 
      if let vanuatu = australia["vanuatu"] as? [String]{ 
       // Access the vanuatu here 
       } 
      } 
     } 
2
if let path = NSBundle.mainBundle().pathForResource("Property List", ofType: "plist") { 
     dict = NSDictionary(contentsOfFile: path) 
     if let vanuatu = dict.objectForKey("australia") as? [String:AnyObject]{ 
      if let vanuatuArray = vanuatu["vanuatu"] as? [String]{ 
       print(vanuatuArray[1]) 
      } 
     } 

    } 
1

で、あなたはそのようなplistファイルからデータを取得することができます。 私はcountryCodesのplistファイルを作成しました。

func fetchCounrtyCodes() -> [CountryCodes]{ 
let name = "name" 
let dial_code = "dial_code" 
let code = "code" 

var countryArray = [CountryCodes]() 

guard let filePath = NSBundle.mainBundle().pathForResource("CountryList", ofType: "json") else { 
    print("File doesnot exist") 
    return [] 
} 
guard let jsonData = NSData(contentsOfFile: filePath) else { 
    print("error parsing data from file") 
    return [] 
} 
do { 
    guard let jsonArray = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as? [[String:String]] else { 
     print("json doesnot confirm to expected format") 
     return [] 
    } 
    countryArray = jsonArray.map({ (object) -> CountryCodes in 
     return CountryCodes(name: object[name]!, dial_code:object[dial_code]!, code: object[code]!) 
    }) 
} 
catch { 
    print("error\(error)") 
} 
return countryArray 
} 

struct CountryCodes{ 
var name = "" 
var dial_code = "" 
var code = "" 
} 
関連する問題