我有一个表格,其中的列是_User的pinter。我想检查一个字符串是否等于我在表中的用户ID。
在此示例中,我想检查iSMSxjAnvJ
是否等于用户列。
这是我的代码:
PFQuery *query2 = [PFQuery queryWithClassName:@"Friends"];
[query2 whereKey:@"user" equalTo:self.friendID];
[query2 findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
for (PFObject *friendRecord in objects) {
// do something with a single example object here.
}
}];
但是我收到了这个错误:
[Error]: pointer field user needs a pointer value (Code: 102, Version: 1.7.5)
我需要将此指针值更改为字符串类型以进行比较。一种方法是查询我的用户表并获取字符串值。还有更好的办法吗?
答案 0 :(得分:4)
equalTo的操作数:对于指针列是PFObject,可以是完整对象,也可以是只有objectId(解析世界中的“指针”)的空PFObject。换句话说,假设您有一个真正的PFUser对象......
PFUser *friend = // imagine you have this somehow.
要测试朋友实例的用户是否为friend
,请说...
PFQuery *query2 = [PFQuery queryWithClassName:@"Friends"];
[query2 whereKey:@"user" equalTo:friend];
但是如果你没有物体怎么办?就像名称friendId
暗示的那样,如果你只有一个objectId字符串怎么办?两个答案:
简答:将objectId变为指针......
PFUser *friendPointer = [PFUser objectWithoutDataWithClassName:@"_User" objectId:self.friendID];
PFQuery *query2 = [PFQuery queryWithClassName:@"Friends"];
[query2 whereKey:@"user" equalTo:friendPointer];
答案很长:从问题开始:为什么你只有对象id,为什么你没有真正的对象?将self上的friendId
(字符串)列更改为friend
列(指向_User的指针)。然后...
// put a column called friend on self. Make it a pointer to _User
PFUser *friend = self.friend; // we imagined this before, now its real!
PFQuery *query2 = [PFQuery queryWithClassName:@"Friends"];
[query2 whereKey:@"user" equalTo:friend];