ios - 使用 NSPredicate 实现高效的 PFQuery

标签 ios objective-c parse-platform nspredicate pfquery

我的应用使用 Parse 作为后端。在应用程序的某个时刻,我必须查询至少应包含另一个数组中的一个标签的对象。为了清楚起见,在数据库中我有一个图片类,它有一个标签属性,将标签保存在一个数组中。在我的应用程序中,我有一系列需要比较的标签。仅应获取至少具有存储在 Tags 属性中的标记之一的对象。我尝试使用以下 PFQuery 函数 whereKey:containedIn:whereKey:containsAllObjectsInArray: 但是它们都不是我想要的。现在我把注意力转移到了 NSPredicates 上。我尝试了以下方法:

PFQuery *postsQuery = [PFQuery queryWithClassName:@"Pictures" predicate:[NSPredicate predicateWithFormat:@"ANY Tags MATCHES ANY ", _tags]];

当我运行代码时,我收到以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "ANY Tags MATCHES ANY "'

我如何执行这样的查询或适合我的情况的 NSPredicate?

作为进一步解释查询的说明: 假设数据库中的一个对象在“标签”列中具有以下内容

Tags = ["music", "video", "picture", "chocolate"]

我想在谓词中使用的标记数组如下:

tagsArray = @["picture", "French"];

我所期待的是收到前一个对象,因为它有“图片”标签。如果另一个对象不包含 tagsArray 中的至少一个标记,则不应获取它。

编辑: 我发现我不能使用聚合操作,例如 ANY、SOME、ALL 或 NONE。我可以找到其他解决方案吗?

最佳答案

另一种解决方案是使用云代码并在服务器上用 Javascript 编写查询。

然后您只需访问您定义的新 API 端点并以这种方式获取查询结果。

关于ios - 使用 NSPredicate 实现高效的 PFQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635578/

相关文章:

ios - 2 个同步的 UILongPressGestureRecognizer

objective-c - 核心数据和 NSEntityDescription

javascript - Parse-JS-SDK, matchesKeyInQuery 不支持objectId。

使用 Parse 的 IOS 推送通知

ios - 需要快速进行分段控制的指导

ios - CVPixelBuffer 到 NSData 并返回

ios - cellForRowAtIndexPath NSRangeException

ios - 在 IOS 中工作的返回屏幕按钮

javascript - 在服务器端调用 Parse 函数

ios - GL_DEPTH_COMPONENT24_OES 的等轴瓦贴图闪烁