Как назначить переменные в одном классе, которые используют друг друга при получении данных из предыдущего представления - PullRequest
0 голосов
/ 06 января 2020

У меня есть контроллер представления перед загрузкой, который получает разные видео из моей базы данных и получает их URL-адрес для загрузки, затем я передаю каждый URL-адрес следующему viewcontroller в его собственной строке, используя prepare(segue:...), в этом классе у меня программно сделал прокрутку с моими пользовательскими данными, однако я получаю ошибку Cannot use instance member 'itemOne' within property initializer; property initializers run before 'self' is available. Я понимаю, что означает эта ошибка, и я пробовал ленивые переменные, но я не думаю, что это сработает, учитывая, что предыдущему контроллеру представления нужна эта переменная для отправки данных url, если это имеет смысл. Итак, как бы вы go сообщили об этом, когда вам нужно отправить данные в эту переменную, вот мой код:

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
]
/....

1 Ответ

0 голосов
/ 06 января 2020

Вы можете сделать данные вычисляемым свойством

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!)
    ]
}
...