2016-08-02 71 views
1

我已经创建,如下图所示与大洲,国家和随机事实属性列表:如何访问一个属性列表

property list

我可以访问属性列表中很容易够顶级键:

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

但是,如果我想访问瓦努阿图数组中的第二个元素,事情就会崩溃。我会认为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 = "" 
}