我的swift代码中有这个功能
func myFunc(){
let jsonData2 = try JSONSerialization.jsonObject(with: data, options: []) as! [[String: Any]
self.comments = jsonData2
}
在collectionView' numberOfItemsInSection
函数中我有这个
return comments.count
我需要的是首先运行myFunc
然后运行所有其他collectionView的函数。我尝试将myFunc()
放在viewDidLoad()
的开头,但它没有& #39; t work。
答案 0 :(得分:1)
尝试将其置于viewWillAppear(_:)
方法中,并在reloadData()
数组更改后调用comments
。
答案 1 :(得分:1)
您需要将comments
数组定义为空,然后在viewWillAppear中加载相关数据
class YourViewController: UIViewController {
var comments : [YourObjects] = []
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.myFunc()
}
func myFunc(){
let jsonData2 = try JSONSerialization.jsonObject(with: data, options: []) as! [[String: Any]
self.comments = jsonData2
DispatchQueue.main.async{
self.collectionView.reloadData() //reload data after
}
}
}
希望这有帮助
答案 2 :(得分:1)
您应该使用重新加载数据来更新UICollectionView
的内容
func myFunc(){
let jsonData2 = try JSONSerialization.jsonObject(with: data, options: []) as! [[String: Any]
self.comments = jsonData2
self.collectionView.reloadData()
}
答案 3 :(得分:0)
确保在首次使用之前初始化comments
的最简单方法是使用惰性属性:
lazy var comments: [String:Any] = self.myFunc()
func myFunc() -> [String:Any] {
return try! JSONSerialization.jsonObject(with: Data()) as! [String:Any]
}