Ios 解析:查询指针数组时出现错误102

Ios 解析:查询指针数组时出现错误102,ios,arrays,parse-platform,Ios,Arrays,Parse Platform,我刚刚开始使用Parse,它相当容易理解,直到我了解了更高级的方面,比如保存指针数组 我在一个Parse论坛上读到,最好的方法是将一个JSON对象保存到定义了一个类型数组的服务器上,例如,我有一个用户数组: [ { "__type":"Pointer", "className":"_User", "objectId":"YkIlOohXZV" }, { "__type":"Pointer",

我刚刚开始使用Parse,它相当容易理解,直到我了解了更高级的方面,比如保存指针数组

我在一个Parse论坛上读到,最好的方法是将一个JSON对象保存到定义了一个类型数组的服务器上,例如,我有一个用户数组:

[
    {
         "__type":"Pointer",
         "className":"_User",
         "objectId":"YkIlOohXZV"
    },
    {
         "__type":"Pointer",
         "className":"_User",
         "objectId":"MBe4g6t8av"
    }
]
这些信息被保存到解析中,但是当我查询数据时,我从来没有得到解析错误

我试过:

let myRequestsQuery = PFQuery("Requests")
myRequestsQuery.whereKey("recipients", containsString: PFUser.currentUser().objectId!)

为什么会出现错误102?是否有更好的方法来搜索数组,或者我必须从服务器查询所有内容?

问题在于,您将指针与字符串进行比较,而不是与另一个解析对象进行比较

我在Android上使用parse,所以我不确定语法,但您应该使用
whereKey
equalTo
解析用户本身(
PFUser.currentUser()
),而不是对其ID进行字符串查找,因为它不是作为字符串存储的。当涉及数组时,
equalTo
在内部搜索匹配项

我不知道斯威夫特,但我认为在Obj-C中应该是这样的:

PFQuery *query = [PFQuery queryWithClassName:@"Requests"];
[query whereKey:@"recipients" equalTo:[PFUser currentUser]];
再次。。。请原谅任何语法错误

顺便说一句,这里有一段我在应用程序中使用的Java代码片段:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Requests");
query.whereEqualTo("recipients", ParseUser.getCurrentUser());
ParseQuery query=ParseQuery.getQuery(“请求”);
query.whereEqualTo(“recipients”,ParseUser.getCurrentUser());

您的(严格正确的)JSON可能需要通过省略键上的引号来变得不那么正确。但更好的建议是:我认为parse论坛建议以这种方式形成指针是不正确的。不要使用文本JSON传递对象ID和表单指针。传递对象并将它们直接(作为对象)分配给指针属性。嘿,丹,谢谢你的建议,这听起来是一种更好的处理方法。将来我想我将只使用sql后端,我想知道JSON格式是否是造成差异的原因。你能检查一下吗?我现在不在我的机器旁。明天我会让你知道的。哦,这很好用,非常感谢。遗憾的是,parse没有更清楚地记录这些方面。我不知道parse会比较数组内部,我认为它只会执行值的文字比较,因此我假设数组和用户甚至不会被计算。很高兴知道:)你帮我清理了大量在前端被查询和过滤的不必要的对象