我正在创建一个自定义类ChatRequest
,但是当我尝试查询它时,它不会返回任何自定义键。
这是我的代码:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
PFQuery *query = [PFQuery queryWithClassName:@"ChatRequest"];
[query setValue:[PFUser currentUser].username forKey:@"toUser"];
NSArray *objects = [query findObjects];
for (NSUInteger i = 0; i < objects.count; i++) {
PFObject *object = [objects objectAtIndex:i];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chat Request!" message:object.sendingUser + @"wants to chat with you!" delegate:self cancelButtonTitle:@"Decline" otherButtonTitles:@"Accept", nil];
[alertView show];
}
}
有人可以帮忙吗?我检查了我的班级是否正确并且键在那里,但仍然无法正常工作。
您无需使用setValue
向查询添加约束。您使用whereKey:equalTo:
,因此您的代码应为:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
PFQuery *query = [PFQuery queryWithClassName:@"ChatRequest"];
[query whereKey:@"toUser" equalTo:[PFUser currentUser].username ];
NSArray *objects = [query findObjects];
for (NSUInteger i = 0; i < objects.count; i++) {
PFObject *object = [objects objectAtIndex:i];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chat Request!" message:object.sendingUser + @"wants to chat with you!" delegate:self cancelButtonTitle:@"Decline" otherButtonTitles:@"Accept", nil];
[alertView show];
}
}
但是,出于性能原因,像这样同步调用查找对象是个坏主意。您应该使用- (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block
来允许查询在后台完成。在完成块中,您可以刷新UI。
同样,从设计的角度来看,您toUser
应该是引用类型列,而不是字符串类型。然后,您可以使用
[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句