使用 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 一起使用?