为什么不复制/分配这个字典数组?

时间:2017-04-12 19:50:34

标签: swift dictionary

我正在尝试在完成块中填写字典但是当我打印它时字典总是空的。我已经尝试过分配它,并且还使用循环来单独追加每个元素......任何见解都值得赞赏!原始字典(在完成块中返回已填充)

数据是一个字典数组。

var friendsList : [[String : AnyObject]] = [[:]]

fetchFriends(username: username) { (listOfFriends) in

        print("data set is:")    <-----This is working, the data set is full
        print(listOfFriends)

        //self.friendsList = listOfFriends  <---this code didn't work

        for person in listOfFriends {       <-------this code didn't work
            for (key,value) in person {
                let friend = [ key : value ]
                self.friendsList.append(friend)
            }
        }
    }

我将完成块中的代码更改为此(不要理解为什么这样做也不会......)

 for person in listOfFriends {

            print(person)   <-----this prints the correct information
            self.friendsList.append(person) <----this is working here
            print(self.friendsList) <---prints as expected

        }
    }

然后当我在viewDidLoad中打印friendsList后,调用此函数来填充它,它只是将[[:]]打印到控制台

1 个答案:

答案 0 :(得分:0)

你在viewDidLoad中找到它的原因是调用fetchFriends是异步的,所以在调用viewDidLoad之后它就完成了。

会发生什么:

  • 你打电话给ferchFriends
  • 加载控制器并调用viewDidLoad
  • 该属性仍为空
  • fetchFriends完成并且属性数组已正确填充