【问题标题】:Compare dictionary object with an Array in Parse.com - iOS将字典对象与 Parse.com 中的数组进行比较 - iOS
【发布时间】:2016-03-30 05:49:18
【问题描述】:

我有一个具有对象类型列的类,例如

          COLUMN 1
Row 1 :   {"gender":"male","name":"A"}
Row 2 :   {"gender":"female","name":"B"}
Row 3 :   {"gender":"male","name":"C"}

我需要获取 COLUMN1 中键 name 的对象与我的数组 ["A","B"] 的内容匹配的行

所以在可能的情况下,查询应该返回 ROW 1 和 ROW 2。

据我所知,我知道这种方法,但它用于将数组与 Parse 中的 string 列进行比较: [query whereKey:@"name" containsAllObjectsInArray:selectedParticipants];

如何将我的数组与字典列进行比较?

【问题讨论】:

  • 为什么不直接使用字典中的值创建一个数组并将该数组放入查询中?我知道 Swift 的工作原理是即使你这样做它也不会“创建”一个实际的副本,而是一个指向它的指针,所以即使有 10000 行它也非常快......

标签: ios parse-platform nsarray nsdictionary pfquery


【解决方案1】:

parse.com 集合中的对象类型的缺点之一是它只能被查询以获得完全匹配。在当前模型下执行此操作的唯一方法是使用其他列限定查询以获取可能与对象条件匹配的最小集合,然后在客户端进行对象匹配。

如果集合有很多文档,并且您希望它快速运行,更好的选择是调整数据模型,使嵌入对象中的可查询属性成为它们自己的列...

       name (string) gender (string) otherStuff (object)
row0   "A"           "male"          { /* stuff we don't query on */ }
row1   "B"           "female"        { ... }
...

这样,您将使用[query whereKey:@"name" containedIn:@[@"A", @"B"]] 来限定查询。注意这不是 containsAllObjectsInArray,这是测试数组属性的方法。

【讨论】:

  • 谢谢。我有这个想法。你确认了。
猜你喜欢
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
相关资源
最近更新 更多