从属性列表中检索数据

Posted

技术标签:

【中文标题】从属性列表中检索数据【英文标题】:Retrieving data from property lists 【发布时间】:2017-11-22 20:44:35 【问题描述】:

我有一个 plist 数据,包含 dictionariesarray,我想获取所有字典的第一个值 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 英文值

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

【问题讨论】:

不清楚;你能显示实际的输入和期望的输出吗? @matt,问题已更新 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你需要遍历数组

for item in plistData 
   print(item)

【讨论】:

嗯,谢谢,您的代码有效,我是 swift 新手,真的不知道您的方式或@vadian 的方式是否更有效

以上是关于从属性列表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 YouTube API v3 检索播放列表中的项目数

Terraform:从对象列表中检索值

从 Django 表单 ChoiceField 中检索选定的选项

AutoBean、数组/列表属性和 JSNI

检索“主”对象列表时,Backand 无法检索“从”对象

LiteDB 插入或检索 master 的详细信息列表