我正在执行一个简单的PFQuery
来获取一堆Box
对象(类名)。
我的Box
指向一个名为Toy
的toy
对象。
我让我的用户选择一堆玩具,然后搜索只显示Box
对象与那些Toy
对象。
所以我最终得到了NSArray
类型为PFObject
的Toy
。我有一个对象的objectId
字符串数组,我只是创建另一个这样的数组:
PFObject *obj = [PFObject objectWithoutDataWithClassName:@"Toy" objectId:objectId];
现在我可以查询对象,我想。我尝试用Box
查询NSPredicate
对象,如下所示:
[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"toy = %@", toyObject]];
我的应用程序崩溃,并告诉我它无法解析。所以在添加谓词之前,我改为使用objectId
并尝试这样做:
[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"toy.objectId = %@", toyObject.objectId]];
但是,它也不喜欢这种格式。那么我怎么能创建一个NSPredicate
,让我只能获取具有特定指针结果的对象,如解释的那样。
我觉得你对自己这么做太难了。如果我正确地阅读你的问题,有一个更简单的方法,你不必使用NSPredicate
:
NSMutableArray *toys = [NSMutableArray array];
// Figure out some way (during selection) to get the "toy" objects into the array
PFQuery *query = [PFQuery queryWithClassName:@"Box"];
[query whereKey:@"toy" containedIn:toys];
[query findObjects... // You should know the rest here
就是这样!很好,很容易,应该找到所有Box
实例,其中包含toy
数组中包含的toys
。
换句话说就是使用
PFUser *user = [PFUser currentUser];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fromUser = %@", user];
在这个例子中,“user”是存储在表中的指针,我们在“fromUser”列下搜索它
事实证明这很简单。
如果要创建[NSString stringWithFormat:(NSString *)]
格式字符串,请不要使用NSPredicate
。 NSPredicate
真的不喜欢它,往往无法解析你的格式。