我正在製作一個註冊用戶的應用程序,並允許他們添加好友等。所以我有一個LoginViewController,當登錄成功時,我檢索用戶朋友的objectIds數組。這個函數被調用。如何運行解析查詢循環?
- (void) getFriendList
{
NSString * objectID = [PFUser currentUser].objectId;
NSLog(@"%@", objectID);
PFQuery *query = [PFUser query];
[query getObjectInBackgroundWithId:objectID block:^(PFObject *username, NSError *error) {
sharedClass.sharedInstance->retrievedFriends = username[@"friendsIds"];
friendListLoaded = YES;
[self getFriendsUsernames];
}];
這裏我得到一個數組對象,其中包含此用戶擁有的所有朋友的對象ID。正如你可以看到getFriendList完成時,它會調用另一個名爲GetFriendsUsernames的函數。此功能應該檢索這些朋友的個人資料照片和用戶名,以便稍後可以填充好友列表視圖。
-(void) getFriendsUsernames
{
NSMutableArray * objectIDs = [[NSMutableArray alloc] initWithArray: sharedClass.sharedInstance->retrievedFriends];
PFQuery *query = [PFUser query];
int friendsCount = [objectIDs count];
for(int i = 0; i<=friendsCount;i++)
{
[query getObjectInBackgroundWithId:objectIDs[i] block:^(PFObject *username, NSError *error) {
[sharedClass.sharedInstance->friendsUsernames addObject:username[@"username"]];
[sharedClass.sharedInstance->friendsProfilePictures addObject:username[@"ProfilePicture"]];
}];
NSLog(@"%@", sharedClass.sharedInstance->friendsUsernames);
}
}
但這似乎因爲沒有被記錄其中一個時被查詢完成了它應該記錄檢索朋友的用戶名在控制檯上是不成功的。我是否以正確的方式做這件事?我的數組數是正確的,所以循環運行到用戶擁有的朋友數量。它還打印objectIds數組中的第一個對象的用戶名,如果我把日誌記錄命令在循環中。
我的查詢顯示friendsList Array中的第一個objectID的用戶名,但沒有別的。我不太清楚你提到的模式。這就是我所理解的,我必須創建一個指向數組「FriendsList」的每個成員的指針數組。這是我的數據庫中的數組類型列,這就是我存儲用戶的朋友 – NSNoob 2014-11-10 06:42:33