문제

사용자 정의 클래스를 만들고 있습니다. 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];
    }
}

그러나 성능상의 이유로 이와 같이 find 객체를 동기적으로 호출하는 것은 좋지 않습니다.당신은 사용해야합니다 - (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block 쿼리가 백그라운드에서 완료되도록 허용합니다.완료 블록에서 UI를 새로 고칠 수 있습니다.

또한 디자인적인 측면에서도 toUser 문자열 유형이 아닌 참조 유형 열이어야 합니다.그런 다음 사용할 수 있습니다

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top