質問

カスタムクラス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]];
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top