我对Parse很陌生,所以我坚持使用开发者指南和基本功能。 不幸的是,似乎有关countObjectsInBackgroundWithBlock函数的文档中至少有一个错误。 这是我的功能
var categoryCount: [Int] = []
func getNumberOfItemInCategory(){
for category in categories {
var query = PFQuery(className: "Amiibos")
query.whereKey("category", equalTo: category)
query.countObjectsInBackgroundWithBlock { (count, error) -> Void in
if error == nil {
var result = Int(count)
println("there is \(result) in \(category)")
// println( "TypeName0 = \(_stdlib_getDemangledTypeName(result))")
self.categoryCount.append(result)
}
}
}
for toto in categoryCount {
println("toto: \(toto)")
}
println("categoryCountFunc: \(self.categoryCount)")
}
此函数不会返回Int但是Int32。我试图用return Int(count)
更改返回值,但是我收到错误。
然后我想在函数中使用这个函数:
let categories = ["name1", "name2"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if categoryCount.isEmpty {
return 0
}
else {
return categoryCount[section]
}
}
非常感谢任何帮助,非常感谢
[编辑 - 添加] 我添加了一个函数来获取结果并刷新表。
func makeRequest() {
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.getMyObjectsFromParse()
self.getNumberOfItemInCategory()
self.tableView.reloadData()
})
答案 0 :(得分:0)
countObjectsInBackgroundWithBlock
返回void
,并获取一个也返回void
的块参数。
发布代码问题的核心是异步计算需要立即结果的数据源方法的计数。
更好的设计是直接获取每个部分的数据,将结果放在数据源数组中,然后重新加载表。然后numberOfRowsInSection
可以执行它的目的,只返回一个数组的计数。