【问题标题】: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),但这似乎严格针对字典而不是对象。

感谢您的帮助...

【问题讨论】:

标签: swift firebase firebase-realtime-database


【解决方案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 结构。您应该考虑将数据存储为类或结构,这样您就可以直接访问此答案中建议的属性。
猜你喜欢
  • 2015-09-09
  • 2013-01-21
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2017-05-06
相关资源
最近更新 更多