如下代码,如果传入"?"则会查出所有数据, 这个是故意为之让前端自己维护还是bug?这种问题还挺危险的..

 AVQuery *query = [AVQuery queryWithClassName:_User];
    [query whereKey:@"username" containsString:name];
    [query findObjectsInBackgroundWithBlock:resultBlock];

你好,上述问题确实存在。我们内部也在关注这个问题。

containsString 这个函数实际上会在底层用到 RESTful API 中的 $regex 查询(正则查询),SDK 中没有正确地对 contains 的参数进行转义,因为 ? 是正则里的特殊字符,所以会搜索不出预期的结果。我们内部讨论后考虑到这个行为在 SDK 中已经持续了相当长的时间,不宜立即修改,准备在之后的某次大版本升级中再修正这个函数的行为。

暂时你可以用反斜线对 ? 进行一下转义来绕过这个问题。

 [query whereKey:@"username" containsString:@"\\?"];