从属性列表中检索数据

时间:2017-11-22 20:44:36

标签: swift nsbundle

我有一个plist数据,包含array dictionaries,我希望得到所有词典的第一个值english

let path = Bundle.main.path(forResource:"idictionary", ofType: "plist")
let plistData = NSArray(contentsOfFile: path!)
print(plistData![0]) // only gets the first one

打印print(plistData![0])只会在日志

中显示
{
    english = abbey;
    kurdi = "\U06a9\U0644\U06ce\U0633\U06d5";
}

但我想打印所有dictionaries英文值

这是我的一个picture 我有一堆记录,并尝试获取每个项目的english

2 个答案:

答案 0 :(得分:1)

首先,以现代方式加载数据(Swift 4):声明一个struct:

struct Word : Decodable { let english:String; let kurdi:String }

将数据加载到该结构的数组中:

let url = Bundle.main.url(forResource:"idictionary", withExtension: "plist")!
let data = try! Data.init(contentsOf: url)
let array = try! PropertyListDecoder().decode([Word].self, from: data)

现在你有一个Word数组,其中每个Word都有english属性。如果您只想要英语,请映射数组:

let englishArray = array.map{$0.english}

答案 1 :(得分:-1)

你需要遍历数组

for item in plistData {
   print(item)
}