【问题标题】:Quickblox - fetch user friends' avatars and display inside a UITableViewQuickblox - 获取用户朋友的头像并在 UITableView 中显示
【发布时间】:2014-10-27 06:31:24
【问题描述】:

我需要在 UITableView 中显示整个好友列表的头像。

我也可以在 Quickblox 论坛中提出这个问题,但似乎他们的支持在那里反应迟钝。

我已阅读 Quickblox 文档,但找不到获取用户头像图像的有效方法。我看到的都是[QBContent TDownloadFileWithBlobID],但是不知道怎么用。

我正在使用chatContactListDidChange 委托调用获取联系人,如下所示。现在我怎样才能同时获得所有这些用户的头像图像?

请注意,friendsArray 是我用于表格视图的数据源,因此理想情况下,我希望将头像图像存储为同一数组的一部分。

- (void)chatContactListDidChange:(QBContactList *)contactList
{
    NSLog(@"contact list changed");
    NSLog(@"current contact list %@", [QBChat instance].contactList);
    [self fetchContacts:[QBChat instance].contactList.contacts];
}

- (void) fetchContacts : (NSArray *) contactArray
{
    NSMutableArray * userIDArray = [[NSMutableArray alloc] init];
    for (QBContactListItem * contact in contactArray)
    {
        NSString * userIDString = [NSString stringWithFormat:@"%ld", (unsigned long)contact.userID];
        [userIDArray addObject:userIDString];
    }

    if (!userIDArray.count)
    {
        return;
    }

    NSString * requestString = [userIDArray componentsJoinedByString:@","];
    [QBUsers usersWithIDs:requestString delegate:self context:@"FetchFriends"];
}

- (void)completedWithResult:(Result *)result context:(void *)contextInfo
{
    if([result isKindOfClass:[QBUUserPagedResult class]])
    {
        NSString * context = (__bridge NSString *)contextInfo;
        // Success result
        if(result.success)
        {
            QBUUserPagedResult * pagedResult = (QBUUserPagedResult *)result;
            if ([context isEqualToString:@"FetchFriends"])
            {
                if (friendsArray)
                {
                    [friendsArray removeAllObjects];
                }
                else
                {
                    friendsArray = [[NSMutableArray alloc] init];
                }

                QBUUser * user = [pagedResult.users objectAtIndex:0];
                //user.blobID   
                friendsArray addObjectsFromArray:pagedResult.users];
            }            
        }
        else
        {
            NSLog(@"Error getting users: %@", context);
        }
    }
}

【问题讨论】:

    标签: ios iphone uitableview quickblox avatar


    【解决方案1】:

    使用 QBUUser 的字段 - customData 用于用户图像的公共 URL,blobID 用于上传的 blob。

    Image --> [QBContent TUploadFile...] --> 获取回调结果 (QBCFileUploadTaskResult) --> 获取 blob (QBCBlob) --> 将 blob id 保存到 user.blobID --> 获取您的公共 url图片:[currentBlob publicURL] --> 保存到 user.customData --> 更新用户:[QBUsers updateUser...] 希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多