如何遍历对象字典及其键

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 结构。您应该考虑将数据存储为类或结构,这样您就可以直接访问此答案中建议的属性。

以上是关于如何遍历对象字典及其键的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历对象数组并制作键值对?

python字典的简单操作(修改删除嵌套遍历复制)

SWIFT:遍历转换为字典的 JSON 对象

如何循环遍历对象数组并根据 JavaScript 中的条件添加新的对象键?

如何遍历对象数组以查找 ID 然后返回兄弟键

使用 Symbol 键遍历对象属性