在UITableViewController中,我尝试这样做:
在界面中:
@property (nonatomic, strong) NSMutableArray *tickets;
在实施中
for(NSString *t in [SharedPreferences getTickets]){
[[TicketListManager sharedManager] ticket:^(Ticket *sc) {
[self.tickets addObject:sc];
[self.tableView reloadData];
NSLog(@"ticket %d", self.tickets.count);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"error");
} ticket:ticketId];
}
虽然所有对象都已成功加载(我记录了它们),但是票数一直是0,所以我的表不会更新。任何想法为什么对象没有保存到数组?我在xcode 5,iOS7和restkit 0.20.3
答案 0 :(得分:3)
很可能self.tickets
未初始化。设置:
self.tickets = [NSMutableArray array];
创建控制器时。
除此之外:您的方法ticket:failure:ticket:
不是很明确,而且会更好getTicketWithId:success:failure:
。
另一方面:小心在循环中启动网络连接,因为您可能会泛滥网络。您可能希望通过编辑http客户端的队列来限制并发连接。
答案 1 :(得分:0)
试试这可能是这项工作 -
for(NSString *t in [SharedPreferences getTickets]){
[[TicketListManager sharedManager] ticket:^(Ticket *sc) {
[self.tickets addObject:sc];
[self performSelectorOnMainThread:@selector(reloadTableData) withObject:Nil waitUntilDone:TRUE];
NSLog(@"ticket %d", self.tickets.count);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"error");
} ticket:ticketId];
}
-(void)reloadTableData{
[self.tableView reloadData];
}