使用 Parse 获取 UITableView 中的单元格数

Posted

技术标签:

【中文标题】使用 Parse 获取 UITableView 中的单元格数【英文标题】:Using Parse to get number of Cells in UITableView 【发布时间】:2014-10-12 12:31:17 【问题描述】:

我正在尝试使用 Parse 检索 UITableView 中的单元格数。

调用返回的速度比后台任务完成的速度快,因此单元格的数量等于零。

代码如下:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
#warning Incomplete method implementation.
    __block int rows;


    PFQuery *query = [PFQuery queryWithClassName:@"bills"];
    [query whereKey:@"houseId" equalTo:@1];
    [query countObjectsInBackgroundWithBlock:^(int count, NSError *error) 
        if (!error) 
            rows = count;
            NSLog(@"in block = %d",rows);
         else 
            rows = 0;
        
    ];

    NSLog(@"out of block = %d",rows);
    return rows;

【问题讨论】:

【参考方案1】:

countObjectsInBackgroundWithBlock 是一种异步方法,它会立即返回并仅在网络调用完成后才运行块,因此numberOfRowsInSection 不会等待异步调用完成

获取计数的一种方法是使用 @property NSArray *stuff 并以不同的方法从 parse 加载对象,例如 loadStuffFromParse 并在该调用的完成块中执行类似的操作

我可能有viewWillAppear 中的方法(如果您启用了拉动刷新,则可以在刷新控件操作中挂钩)

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    [self loadStuffFromParse];

只要有类似的东西

#pragma mark - Implementation
- (void)loadStuffFromParse 
    // Do anything we need to do before loading like updating user interface        

    // [PFQuery loadStuffFromParse:^(NSArray *data, NSError *err )
    //    if (!err) 
    //      self.stuff = data; // defined in @interface
    //      dispatch_async(dispatch_get_main_queue(), ^
    //        [self.tableView reloadData];
    //      );
    //     else 
    //      handle the error
    //    
    //];


或类似的,但你决定。

numberOfRowsInSection 中假设你只有一个部分可以做

- (NSInteger)numberOfRowsInSection:(NSInteger) section 
    return [self.stuff count];

【讨论】:

我应该把查询放在哪里?

以上是关于使用 Parse 获取 UITableView 中的单元格数的主要内容,如果未能解决你的问题,请参考以下文章

如何通过滑动从 Parse 中的 UITableView 中删除对象?

保存和加载 UITableView 数组 - iOS Swift Parse

从 Parse Array 中删除项目后 UITableView 崩溃

禁用按钮,直到 UITableView 加载来自 Parse.com 的数据

iOS Swift:在自定义 UITableView 单元格中更新二维数组时获取重复值

如何将检索到的对象从 parse.com 传递到 NSMutableArray 以与 UITableView 一起使用?