Я пытаюсь преобразовать свой collectionView в IGListKit CollectionView.Я получаю ошибку: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: indexPath != nil'
вот код viewController, который содержит collectionView:
import UIKit
import IGListKit
import Firebase
import SAMCache
class NewHomeViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var sectionCategories: [String] = ["Friends Lists", "Friends", "People"]
var lists = [Media]()
lazy var adapter: ListAdapter = {
return ListAdapter(updater: ListAdapterUpdater(), viewController: self, workingRangeSize: 0)
}()
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView.collectionViewLayout = UICollectionViewLayout()
adapter.collectionView = collectionView
adapter.dataSource = self
// check if the user logged in or not
Auth.auth().addStateDidChangeListener { (auth, user) in
if let user = user {
// signed in
WADatabaseReference.users(uid: user.uid).reference().observeSingleEvent(of: .value, with: { (snapshot) in
if let userDict = snapshot.value as? [String : Any] {
self.currentUser = User(dictionary: userDict)
print("user is signed in2")
//load the media
if self.currentUser != nil {
DispatchQueue.main.async {
self.observeMedia()
}
}
}
})
print("user is signed in")
} else {
print("user is not signed in")
self.performSegue(withIdentifier: Storyboard.showWelcome, sender: nil)
}
}
}
func observeMedia() {
Media.observeNewMedia { (media) in
print("observed")
if !self.lists.contains(media) {
self.lists.insert(media, at: 0)
print("adding")
print("\(self.lists.count)")
self.adapter.performUpdates(animated: true, completion: nil)
}
}
}
}
extension NewHomeViewController: ListAdapterDataSource {
func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
let feedItems: [ListDiffable] = lists
return feedItems
}
func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController {
return postSectionController()
}
func emptyView(for listAdapter: ListAdapter) -> UIView? {
let view = UIView()
view.backgroundColor = .red
return view
}
}
и мой postSectionController
import UIKit
import IGListKit
class postSectionController: ListSectionController {
var list: Media!
}
extension postSectionController {
override func numberOfItems() -> Int {
return 1
}
override func sizeForItem(at index: Int) -> CGSize {
return CGSize(width: 158, height: 203)
}
override func cellForItem(at index: Int) -> UICollectionViewCell {
print("got to cell for item")
let cell = collectionContext?.dequeueReusableCell(withNibName: "HomeListsCollectionViewCell", bundle: nil, for: self, at: index) as! HomeListsCollectionViewCell
cell.media = list
return cell
}
override func didUpdate(to object: Any) {
list = object as? Media
}
override func didSelectItem(at index: Int) {
}
}
Я действительноне понимаю, почему эта ошибка происходит.Массив lists
не пуст, и collectionViewCell печатает информацию из ячейки консоли, поэтому я знаю, что объект (Media
) тоже не пустой.Я впервые использую IGListKit, поэтому не знаю, что я пропустил.Кто-нибудь может помочь?
Я попытался изменить свой collectionView на обычный вид с классом IGListCollectionView
, но это выдает ту же ошибку, что и заголовок.Мой класс UICollectionViewCell и перо работают как в обычном collectionView