我需要查询parse.com以检查数组中是否存在2个指定值。
文件说明: “你可以给出多个约束,如果对象匹配所有约束,那么它们只会出现在结果中。换句话说,它就像一个约束的AND。”
我的经验表明不是。
我正在这样查询: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
);
}
查询显然返回了一个与约束条件相匹配的对象数组。 不是两个......
我该如何解决这个问题?
答案 0 :(得分:2)
使用此可用方法。这样可以确保指定数组中的 EVERY 对象必须存在。
- (void)whereKey:(NSString *)key containsAllObjectsInArray:(NSArray *)array;
PFQuery *gameQuery = [PFQuery queryWithClassName:@"GameObject"];
[gameQuery whereKey:@"users" containsAllObjectsInArray:@[user1,user2]];
NSArray *gameObjects = [gameQuery findObjects];
答案 1 :(得分:1)
来自Parse标题文档:
/*!
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]];