我有一个包含表格视图的应用。表格视图由从Parse中提取的数据填充。为了获得我想要填充TableView的行数,我查询解析。
var count = gamesQuery.countObjects()
activeGamesCurrentUser = count
但是,当我尝试为行数返回activeGamesCurrentUser时,它始终为0,因为变量不会在完成块之外更新。如果我打印" countInt"在块的内部,它是一个大于0的数字。
我不想像这样解决问题:
var activeGamesCurrentUser = 0
func getRowNumber() {
if PFUser.currentUser() != nil && finished == true {
currentUserObjectId = PFUser.currentUser()?.objectId
let currentUser = PFUser.currentUser()
let challengedQuery = PFQuery(className: "Games")
challengedQuery.whereKey("challenged", equalTo: currentUserObjectId)
let challengerQuery = PFQuery(className: "Games")
challengerQuery.whereKey("challenger", equalTo: (currentUser?.objectId)!)
let gamesQuery = PFQuery.orQueryWithSubqueries([challengedQuery, challengerQuery])
gamesQuery.countObjectsInBackgroundWithBlock({
(count, error) -> Void in
let countedInt = Int(UInt32(count))
self.activeGamesCurrentUser = countedInt
})
}
override func viewDidLoad() {
super.viewDidLoad()
getRowNumber()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return activeGamesCurrentUser
}
这是因为" countObjects()"是同步的,将永远在前台继续运行。有关此问题的任何帮助将不胜感激。
修改
以下是完整的方法:
set.seed(1)
datae=matrix( rnorm(100*1,mean=0,sd=1), 100, 1)
答案 0 :(得分:3)
一些事情 -
首先,始终使用对self的弱引用来访问块内的类属性。
第二次,在您完成模型更新后重新加载表。
weak var aBlockSelf = self
gamesQuery.countObjectsInBackgroundWithBlock({
(count, error) -> Void in
let countedInt = Int(UInt32(count))
aBlockSelf.activeGamesCurrentUser = countedInt
aBlockSelf.tableView.reloadData()
})