使用Parse.com如何使用iOS检索解析对象数组

时间:2014-08-07 18:51:48

标签: ios arrays xcode parse-platform

非常感谢任何帮助!我现在已经试图解决这个问题了一段时间,但我发现的任何东西都无法帮助我。我有一个带有表视图的视图控制器,它可以很好地处理静态数据。但是我喜欢这个视图表来显示我自定义的解析类中的一些用户信息。因此,对于每个对象,我想要检索一个字符串,该字符串将对象名字与其分数和等级连接起来。 所以我的目标是拥有一个字符串数组的最终产品,并让它的每个索引都是我的解析类中的不同对象。我希望这是有道理的! 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

我可以向你展示我已完成的类似内容。我想你想显示一个UITableView并用解析对象填充它。

我使用自定义PFObject但你应该没问题。我所做的所有调用都是同步的,但您可以使用findObjectsInBackground来调整这些调用以实现异步。

我通过以下方式从解析中获取数据:

- (NSSet *)clubs
{
    NSMutableSet *clubs = [[NSMutableSet alloc] initWithCapacity:1];

    PFQuery *clubsQuery = [[[TSPlayer currentUser] teams] query];
    clubsQuery.cachePolicy = kPFCachePolicyNetworkElseCache;
    [clubsQuery includeKey:@"club"];
    [[clubsQuery findObjects] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [clubs addObject:[obj objectForKey:@"club"]];
    }];

    return clubs;
}

然后我将结果分配给一个可以填充datasource

的数组
clubsCollectionViewDataSource = [[[TSPlayer currentUser] clubs] allObjects];

我做了一个辅助函数,你不必:

- (TSClub *)clubForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return [clubsCollectionViewDataSource objectAtIndex:indexPath.item];
}

设置数据源:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [clubsCollectionViewDataSource count];
}

制作你的手机:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TeamCell" forIndexPath:indexPath];
    TSClub *club = [self clubForItemAtIndexPath:indexPath];

    cell.textLabel.text = club.shortname;
    cell.detailTextLabel.text = club.chairman;

    return cell;
}

我希望这会引导你朝着正确的方向前进。

答案 1 :(得分:0)

这是一个从Parse获取自定义对象数组的示例(在Swift中):

func fetchPosts(user: PFUser, completionBlock: ObjectsCompletionBlock?) -> Void
{
    if user == nil
    {
        completionBlock?(objects: nil, error: NSError.parameterError())
        return
    }

    var query = PFQuery(className: PostClass)
    query.whereKey(UserKey, equalTo: PFUser.currentUser())
    query.orderByDescending("createdAt")
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error
        {
            println("Error fetching user posts: \(error)")
            completionBlock?(objects: nil, error: error)
        }
        else
        {
            println("Success fetching user posts!")
            completionBlock?(objects: objects, error: nil)
        }
    }
}