Передача json из класса в класс

swift

#21

Это уже нужно делать в замыкании
Примерно так
self.referenceToCollectionViewClass.initData(arraySheduleFilms)


#22

Я рассчитывал это сделать вот так )

 private let reuseIdentifier = "cellShedule"

 class DataProvider:NSObject {
var dataManager = DataManager()
 }

extension DataProvider: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return dataManager.arraySheduleFilms.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! SheduleCell
    cell.nameFilm.text = dataManager.arraySheduleFilms[indexPath.row].film
    cell.imageFilm?.downloadImage(from: (dataManager.arraySheduleFilms[indexPath.row].bigPoster! ))
 
    return cell
 }
}

extension DataProvider: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = dataManager.arraySheduleFilms[indexPath.row]        
  }    
}

#23

Что-то мне подсказывает, что массив в таком случае будет пустой.
И придется делать инициализатор, в котором будет вызываться filmsMenu и в замыкании записывать данные в локальную переменную и вызывать reloadData().


#24

правильно вам, что-то подсказывает, он действительно пуст)


#25

Или попробуйте сделать так

class DataProvider: ... {
    var items: [SheduleFilm] = [] {
        didSet {
            collectionView.reloadData()
        }
    }
}

Во ViewController’e

override func viewDidLoad() {
    super.viewDidLoad()
    
    dataManagerJson.filmsMenu(dates: self.currentData) { items in
        self.dataProvider.items = items
    }
}

Правда я не уверен насчет collectionView.reloadData(), получится ли достучатся так до элемента.


#26

Правильно я думаю что инициализатор нужно писать в этом классе?


#27

Да (_______________________)


#28

Да не достать

collectionView.reloadData()


#29

Тогда так

class DataProvider: ... {
    var items: [SheduleFilm] = []
}

Во ViewController’e

@IBOutlet weak var collectionView: UICollectionView!

override func viewDidLoad() {
    super.viewDidLoad()
    
    dataManagerJson.filmsMenu(dates: self.currentData) { items in
        self.dataProvider.items = items
        self.collectionView.reloadData()
    }
}

#30

Искренне признателен щас то, что нужно. Спасибо огромное за помощь потратили целый день!!! Вы ПРОФИ

RexHunt :medal_sports::medal_sports::medal_sports:


#31

Только не могу найти где поставить +1


#32

направьте на путь Истины. Т.к CollectionView в отельном классе, то не работает переход по

self.performSegue(withIdentifier: “detailVC”, sender: cell)


#33

В DataProvider сделайте делегат и подпишитесь на него в вашем VC и через делегат делайте свои переходы.