1

我正在开发一个社交应用程序。对于当前用户,我需要随机显示该应用的其他用户。

我首先想使用此代码来获取用户数:

PagedRequest *request = [PagedRequest new];
request.perPage = 1;
request.page = 1;
[QBUsers usersWithPagedRequest:request delegate:self.proxy];

我注意到这是返回的 XML:

<users type="array" current_page="1" per_page="1" total_entries="13">
  <user>
    <blob-id type="integer" nil="true"/>
    <created-at type="datetime">2013-07-24T06:16:13Z</created-at>
    <email>xxxxxx@xx.com</email>
    <external-user-id type="integer" nil="true"/>
    <facebook-id nil="true"/>
    <full-name>XXX xxx</full-name>
    <id type="integer">236286</id>
    <last-request-at type="datetime">2013-11-15T06:27:09Z</last-request-at>
    <login>t2wu</login>
    <owner-id type="integer">4282</owner-id>
    <phone nil="true"/>
    <twitter-id nil="true"/>
    <updated-at type="datetime">2013-11-15T06:27:09Z</updated-at>
    <website nil="true"/>
    <user-tags nil="true"/>
  </user>
</users>

我的意图是从“total_entries=13”中获取 13 个,所以我知道用户总数,然后再次发出这样的请求:

PagedRequest *request = [PagedRequest new];
request.perPage = 1;
request.page = [self randomAmong: 13];
[QBUsers usersWithPagedRequest:request delegate:self.proxy];

只需从 1 和 13中[self randomAmong: 13]选择一个数字,然后抓取用户的头像并将其展示给当前用户。

三个问题:

  1. 虽然我可以在控制台输出的 XML 中看到数字 13,但我不知道如何获取该数字。

  2. 我只想轮换通过我的移动应用程序用户,而不是我的开发者帐户(帐户用户)。QuickBlox 允许与一个 QuickBlox 帐户用户关联的多个应用程序;但是,所有用户似乎都混为一谈。尽管我可以确保我在此帐户中只有一个应用程序,但我仍然需要能够将自己排除在其中。

  3. 这是一个相对次要的问题。尽管上述获取当前用户数的尝试不是尝试登录,但委托方法 -(void)completedWithResult:(Result*)result的结果为QBUUserLogInResult. 我不明白为什么会这样,为什么不是 QBUUserPagedResult或者QBUUserResult似乎更有意义?

谢谢。

4

1 回答 1

0

这是正确的方法,以下是您问题的答案:

1)

#pragma mark - 
#pragma mark QBActionStatusDelegate

- (void)completedWithResult:(Result *)result{ 

    // Get User result 
    if(result.success && [result isKindOfClass:[QBUUserPagedResult class]]){
        QBUUserPagedResult *usersResult = (QBUUserPagedResult *)result; 

        int totalEntries = usersResult.totalEntries;
    }
}

2)

您可以使用标签来分隔用户。用户注册时 - 只需向该用户添加标签,例如“app1”。

下一步 - 检索带有标签 'app1' 的用户 - 使用下一个查询:

[QBUsers usersWithTags:[NSArray arrayWithObjects:@"app1", nil] delegate:self];

3)

用户登录查询将返回 'QBUUserLogInResult' 结果

获取单用户查询将返回 'QBUUserResult' 结果

获取多个用户查询将返回 'QBUUserPagedResult' 结果

于 2013-11-16T08:29:58.370 回答