在我的控制器中,我想等待/阻止,直到http请求在尝试加载表之前返回数据。目前,在设置数据源后获取@data.count
时会抛出错误:
def viewDidLoad
super
self.title = "my categories"
@table = UITableView.alloc.initWithFrame(self.view.bounds)
@data = nil
//how to call this next line synchronously ?
create_data
@table.dataSource = self
self.view.addSubview @table
end
def create_data
BW::HTTP.get("http://website.com/api/v1/category") do |response|
if response.ok?
p "response was ok"
mydata = BW::JSON.parse(response.body.to_str)
mydata.each {
|item|
@data << Item.new(item)
p "test"
}
else
warn "problem"
end
end
end
我该怎么做?
答案 0 :(得分:0)
你不应该等。
您可能只需将@data
初始化为空数组即可启动。这将避免异常并防止需要阻止UI线程,您应该不惜一切代价避免这种情况。
所以替换
@data = nil
与
@data = []