如何遍历对象字典及其键
Posted
技术标签:
【中文标题】如何遍历对象字典及其键【英文标题】:How to iterate over a dictionary of objects, and their keys 【发布时间】:2017-10-05 21:18:43 【问题描述】:我正在使用 Swift 和 Firebase。我目前正在将我的 firebase 快照对象存储在全局字典中。这个想法是然后根据一个或多个键的值过滤这些对象。
例如,pendingFilter() 可能会返回所有那些“待定”键等于 true 的对象,并忽略其余的。
数组是这样创建的:
var array = [NSDictionary]()
所有对象都附加为 AnyObject。
我当前的字典看起来像这样:
[
accepted = false;
cancelled = false;
id = "1";
pending = true;
,
accepted = false;
cancelled = false;
id = "2";
pending = true;
,
accepted = true;
cancelled = false;
id = "3";
pending = false;
]
在我的过滤器函数中,我知道我可以使用 for-in 遍历每个项目,但是如何通过对象本身的键值进行过滤呢?是否有首选的 Swifty 方式来执行此操作?我知道项目中的 (key, value),但这似乎严格针对字典而不是对象。
感谢您的帮助...
【问题讨论】:
Iterating Through a Dictionary in Swift的可能重复 【参考方案1】:您可以使用 filter
仅将键 pending
的值设置为 true
的字典。
var pendingFilter: [NSDictionary]
return array.filter $0.value(forKey: "pending") as? Bool == true
【讨论】:
伟大而直接的解决方案。这行得通。谢谢! @sharedev 等一下。如果您实际上将数组中的值存储为 AnyObject,则此答案将不起作用。 Any 类型的值没有成员 .value,这很有意义,因为 key:value 对是 Dictionary 结构而不是 Any 结构。您应该考虑将数据存储为类或结构,这样您就可以直接访问此答案中建议的属性。以上是关于如何遍历对象字典及其键的主要内容,如果未能解决你的问题,请参考以下文章