swift 3即使我已经为它添加了值,我的数组也是空的

时间:2017-08-25 19:18:24

标签: arrays swift

我目前正在使用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%被添加到数组中)

1 个答案:

答案 0 :(得分:-3)

我明白了......

我只需要删除:

self.tableView.reloadData()

接近viewDidLoad函数的末尾