Я занимаюсь обучением, и у меня есть одна проблема с ошибкой:
Общий параметр 'T' не может быть выведен.
**** >> Я просто обновляю вопрос, следуйте вашим советам.
И добавил 2-х строчный код:
let cell: TacoCell = collectionView.dequeReusableCell(forIndexPath: indexPath)
cell.configureCell(taco: ds.tacoArray[indexPath.row])
return cell
И я также изменяю этот код:
func dequeReusableCell to dequeReusableCell
В моем файле UICollectionView + Ex.swift.
import UIKit
extension UICollectionView {
func register<T: UICollectionViewCell>(_: T.Type) where T: ReusableView, T: NibLoadableView {
let nib = UINib(nibName: T.nibName, bundle: nil)
register(nib, forCellWithReuseIdentifier: T.reuseIdentifier)
}
func dequeReusableCell<T: UICollectionView>(forIndexPath indexPath: IndexPath) -> T where T: ReusableView{
guard let cell = dequeueReusableCell(withReuseIdentifier: T.reuseIdentifier, for: indexPath as IndexPath) as? T else {
fatalError("Coud not deque cell with Identifier: \(T.reuseIdentifier)")
}
return cell
}
}
extension UICollectionViewCell: ReusableView {}
и в моем MainVC.swift у меня есть следующий код:
import UIKit
class MainVC: UIViewController, DataServiceDelegate {
@IBOutlet weak var headerView: HeaderView!
@IBOutlet weak var collectionView: UICollectionView!
var ds: DataService = DataService.instance
override func viewDidLoad() {
super.viewDidLoad()
ds.delegate = self
ds.loadDeliciousTacoData()
collectionView.dataSource = self
collectionView.delegate = self
headerView.addDropShadow()
/*
let nib = UINib(nibName: "TacoCell", bundle: nil)
collectionView.register(nib, forCellWithReuseIdentifier: "TacoCell")
*/
collectionView.register(TacoCell.self)
}
func deliciousTacoDataLoaded() {
print("Delicious Taco Data Loaded!")
}
}
extension MainVC: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return ds.tacoArray.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "TacoCell", for: indexPath) as? TacoCell {
// cell.configureCell(taco: ds.tacoArray[indexPath.row])
// return cell
// }
// return UICollectionViewCell()
let cell: TacoCell = collectionView.dequeReusableCell(forIndexPath: indexPath)
cell.configureCell(taco: ds.tacoArray[indexPath.row])
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 95, height: 95)
}
}
В этой строке:
let cell = collectionView.dequeReusableCell(forIndexPath: indexPath) as TacoCell
компилятор жалуется.
Почему была показана эта ошибка и как ее исправить? Заранее спасибо.
==> После того, как мне понравился ваш совет, теперь я могу добиться успеха.
Моя проблема решена. Я все еще что-то реализую, если есть еще какие-либо проблемы, я буду обновлять снова. Большое спасибо!