我需要查询parse.com来检查数组中是否存在2个指定值。
文档指出:“你可以给出多个约束,只有当对象匹配所有的约束时,它们才会出现在结果中。换句话说,它就像一个and of约束。”
根据我的经验,事实并非如此。
我是这样查询的:
NSString *user1 = [self.users objectAtIndex:0];
NSString *user2 = [self.users objectAtIndex:1];
NSLog(@"User 1: %@", user1);
NSLog(@"User 2: %@", user2);
PFQuery *gameQuery = [PFQuery queryWithClassName:@"GameObject"];
[gameQuery whereKey:@"users" equalTo:user1];
[gameQuery whereKey:@"users" equalTo:user2];
NSArray *gameObjects = [gameQuery findObjects];
NSLog(@"gameObjects: %@", gameObjects);我的日志是这样写的:
2012-04-21 14:12:23.656 Cargo[5435:707] User 1: 689XXX62
2012-04-21 14:12:23.658 Cargo[5435:707] User 2: 51XXXX994和
2012-04-21 14:12:24.614 Cargo[5435:707] GameObject: <GameObject:W7qXXXPLWp> {
users = (
8XXX66,
51XXXX994
);
}很明显,查询返回的对象数组与这两个约束中的任何一个都匹配。不是两个都是。
我该如何解决这个问题呢?
发布于 2013-07-09 03:33:38
如PFQuery.h中所述
使用此可用方法。这确保了指定数组中每个对象必须存在。
- (void)whereKey:(NSString *)key containsAllObjectsInArray:(NSArray *)array;示例
PFQuery *gameQuery = [PFQuery queryWithClassName:@"GameObject"];
[gameQuery whereKey:@"users" containsAllObjectsInArray:@[user1,user2]];
NSArray *gameObjects = [gameQuery findObjects];发布于 2012-04-25 01:14:55
来自Parse header文档:
/*!
Add a constraint to the query that requires a particular key's object to be contained in the provided array.
@param key The key to be constrained.
@param array The possible values for the key's object.
*/
- (void)whereKey:(NSString *)key containedIn:(NSArray *)array;您可以这样命名它:
[query whereKey: @"users"
containedIn: [NSArray arrayWithObjects: user1, user2, nil]];https://stackoverflow.com/questions/10258808
复制相似问题