我目前正在使用swift 3来创建应用程序,而且我遇到了问题。基本上,正在发生的事情是在我的函数中,我将值添加到块中的数组并打印出数组,看起来很好,但是当我退出块时,数组与我在全局声明它的方式相同。 这是我的代码...搜索注释,知道我追加的位置并打印数组:
class listUsers: UITableViewController {
var usernames = [""]
var userIDs = [""]
var isFollowing = ["" : true]
//My array declared globally
var theArray = [1]
override func viewDidLoad() {
super.viewDidLoad()
let query = PFUser.query()
query?.findObjectsInBackground(block: { (objects, error) in
if error != nil {
print(error)
}else if let users = objects {
self.usernames.removeAll()
self.userIDs.removeAll()
self.isFollowing.removeAll()
//Notice here How i remove all the elements from my array so that it's empty
self.check.removeAll()
for object in users {
if let user = object as? PFUser {
self.usernames.append(user.username!)
self.userIDs.append(user.objectId!)
let query = PFQuery(className: "Followers")
query.whereKey("Follower", equalTo: (PFUser.current()?.objectId)!)
query.whereKey("Following", equalTo: user.objectId!)
query.findObjectsInBackground(block: { (objects, error) in
if let objects = objects {
if objects.count > 0 {
self.isFollowing[user.objectId!] = true
self.theArray.append(5)
//This prints out [5,5..]..the number of 5 is dependent on the for loop.
print(self.theArray)
}else{
self.isFollowing[user.objectId!] = false
}
if self.isFollowing.count == self.usernames.count {
self.tableView.reloadData()
}
}
})
}
}
}
self.tableView.reloadData()
})
//But when I reprint it here, it prints out [1] and I don't know how to fix it
print(theArray)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = usernames[indexPath.row]
print(theArray)
return cell
}
所以在我打印theArray的cellForRowAt函数中,它打印出来的次数为[1]几次而不是空的,并且打印出正确的实际数字。但这是一个问题,因为我只是这样做调试,但我会用它来索引,我需要实际值。
任何帮助都会很棒,谢谢! (此外,这段代码只是通过服务器中的表查询,但我相信其余部分与此问题无关,因为元素100%被添加到数组中)
答案 0 :(得分:-3)
我明白了......
我只需要删除:
self.tableView.reloadData()
接近viewDidLoad函数的末尾