سؤال

أنا خلق فئة مخصصة 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 للسماح للاستعلام لإكمال في الخلفية.في كتلة الإكمال ، يمكنك تحديث واجهة المستخدم الخاصة بك.

أيضا ، من وجهة نظر التصميم الخاص بك toUser يجب أن يكون عمود نوع مرجع ، وليس نوع سلسلة.يمكنك بعد ذلك استخدام

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top