如何在同一类中分配从上一个视图获取数据时互相使用的变量

问题描述 投票:0回答:1

我加载了一个视图控制器,该视图控制器从数据库中获取了不同的视频并获取了它们的下载URL,然后使用prepare(segue:...)将每个URL传递给它自己的String中的下一个viewcontroller,在该类中,我以编程方式制作了带有我的自定义数据的滚动视图,但是出现错误Cannot use instance member 'itemOne' within property initializer; property initializers run before 'self' is available。我理解此错误的含义,并且我尝试了惰性变量,但是考虑到以前的视图控制器需要该变量将url数据发送到该变量,我认为这样做不起作用。因此,当需要将数据发送到该变量时,如何处理呢,这是我的代码:

class HomeViewController: UIViewController {

// Variables use with the previous view controller to send data between them

var itemOne: String? 
var itemTwo: String?
var itemThree: String?
var itemFour: String?

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(collectionView)
    collectionView.backgroundColor = .white
    collectionView.topAnchor.constraint(equalTo: view.topAnchor, constant: 150).isActive = true
    collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16).isActive = true
    collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16).isActive = true
    collectionView.heightAnchor.constraint(equalTo: collectionView.widthAnchor, multiplier: 0.5).isActive = true 

    collectionView.delegate = self
    collectionView.dataSource = self

}

fileprivate let data = [
    CustomData(title: "Test", image: #imageLiteral(resourceName: "ss-1"), url: itemOne!), // ERROR
    CustomData(title: "Test2", image: #imageLiteral(resourceName: "done-button"), url: itemTwo!), // ERROR
    CustomData(title: "Test2", image: #imageLiteral(resourceName: "notificationIcon"), url: itemThree!) // ERROR
]
/....
swift class variables swift5
1个回答
0
投票
您可以使数据成为计算属性

var data: [CustomData] { return [ CustomData(title: "Test", image: #imageLiteral(resourceName: "ss-1"), url: itemOne!), CustomData(title: "Test2", image: #imageLiteral(resourceName: "done-button"), url: itemTwo!), CustomData(title: "Test2", image: #imageLiteral(resourceName: "notificationIcon"), url: itemThree!) ] }

© www.soinside.com 2019 - 2024. All rights reserved.