2014-09-18 59 views
1

所以我想從Parse使用PFRelation查詢加載用戶名列表。這個想法是加載這個列表,然後在調用它的視圖控制器中使用。 (通過self.yourFriendArray)。原來的問題是,當我在視圖控制器的viewDidLoad方法中調用此函數時,self.yourFriendArray數組爲零,因爲查詢同步運行並且不會更新它。iOS多線程與解析和dispatch_async

所以我的計劃是使用這個findObjectsInBackgroundWithBlock調用中的主線程,但我還沒有得到所需的輸出。

我的多線程不正確嗎?

此外,我只是習慣於提出有關堆棧溢出的問題 - 如果我問這個問題有什麼問題,請在評論中建議一些更新!感謝你們!

[[friendsRelation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

    for (PFUser *user in objects) { 
     NSString *username = user.username; 

     [tempArray addObject:username]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.yourFriendArray addObject:username]; 
     }); 
    } 
}]; 

回答

0

我不知道我是否很好理解你在做什麼......是不是你有一個tableView從yourFriendArray加載userNames列表?然後,你需要做的唯一事情就是在更新的數組準備就緒時重新加載tableView。

[[friendsRelation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

    for (PFUser *user in objects) { 

     NSString *username = user.username; 

     [self.yourFriendArray addObject:username]; 
    } 

    [self.tableView reloadData]; 
}]; 

很抱歉,如果這不是你問...

+0

謝謝回答!所以,是啊,我正試圖加載數據到一個tableView,有點像SnapChat。我試過這個,但它仍然不起作用。我認爲我的問題是Parse的findObjectsInBackground函數如何異步運行以及我的視圖在函數運行之前如何加載。 – sebster 2014-09-18 17:58:00

+0

但是'reloadData'應該在對象被提取後重新加載它。 @ user3238594 – Dehli 2014-09-18 17:58:58

+0

我認爲解析異步執行查詢,但隨後在主線程中執行該塊。所以這應該是全部。你如何做查詢?你有沒有物體? – dadederk 2014-09-18 18:33:47

0

試試這個:

[[friendsRelation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     for (PFUser *user in objects) { 
      NSString *username = user.username; 

      [self.yourFriendArray addObject: username]; 
     } 
     [self.tableview reloadData]; 
    }); 
}];