我的应用程序使用 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 中的一个标签,则不应获取它。
Edite: 我发现我不能使用聚合操作,例如 ANY、SOME、ALL 或 NONE。我能找到另一个解决方案吗?