2015-05-14 51 views
0

我有以下代碼來查找自定義類中的對象。出於某種原因,它找到兩個相同的對象(self.addedArray2的計數是2,但在Parse數據表上聯機,只有一個)。你明白爲什麼它會找到同一個對象兩次?解析查詢找到兩個對象時,只有一個

self.array2 = [[NSMutableArray alloc] init]; 
    self.addedArray2 = [[NSMutableArray alloc] init]; 

    PFQuery *query = [PFQuery queryWithClassName:@"Friends"]; 
    [query whereKey:@"user" containsString:[[PFUser currentUser] objectForKey:@"username"]]; 
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
     for (Friends *currentFriend in objects) { 
      self.relation = currentFriend.friendsRelation; 
      self.addedRelation = currentFriend.addedRelation; 
      self.query = [_relation query]; 

      [[_relation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
       [self.array2 addObjectsFromArray:objects]; 

       [[_addedRelation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
        [self.addedArray2 addObjectsFromArray:objects]; 

        [self.segmentControl setTitle:[NSString stringWithFormat:@"Friends (%lu)", (unsigned long)[self.array2 count]] forSegmentAtIndex:0]; 
        [self.segmentControl setTitle:[NSString stringWithFormat:@"Added Me (%lu)", (unsigned long)[self.addedArray2 count]] forSegmentAtIndex:1]; 
        NSLog(@"Number 1: %@", [self.addedArray2 objectAtIndex:0]); 
        NSLog(@"Number 2: %@", [self.addedArray2 objectAtIndex:1]); 

       }]; 
      }]; 
     } 
    }]; 

它正在記錄「數字1」,然後是「數字1」,然後是「數字2」。看起來代碼正在運行兩次並再次添加。我如何解決這個問題?所有這些嵌套,我真的不知道我能做什麼。

回答

2

爲友類的關鍵「用戶」,如果字符串保存用戶的用戶名,嘗試更換:

[query whereKey:@"user" containsString:[[PFUser currentUser] objectForKey:@"username"]]; 

與此,讓我知道這是否改變任何東西:

[query whereKey:@"user" equalTo:[[PFUser currentUser] objectForKey:@"username"]]; 

如果它是一個指向用戶對象,但是,那麼你將要查詢類似於沿着這些路線的東西:

[query whereKey:@"user" equalTo:[User currentUser]]; 

如果我的任何假設都錯了,讓我知道,因爲我不知道你的類的結構,但我會試着弄明白。

+0

自定義類有一個關鍵字「user」,它只是一個字符串。在與當前用戶相同的地方進行查詢是行不通的。 – smecperson

+0

好的。第一個例子有用嗎? – CoolestNerdIII

+0

第一個實際工作(最初沒有看到)。謝謝 – smecperson