Неоднозначная ссылка на элементы item (cellIdentifier: celltype :) 'с использованием RxSwift и RxRealm - PullRequest
0 голосов
/ 28 июня 2019

У меня есть CollectionView в ViewController, и я пытаюсь получить список объектов из Realm и связать его с CollectionView с помощью RxSwift.

Проблема в том, что я получаю сообщение об ошибке:

"Неоднозначная ссылка на элементы члена (cellIdentifier: celltype :) '"

в строке: .bind (to: collection.rx.items (cellIdentifier ...)

Это код:

import UIKit
import RxRealm
import RxSwift
import RxCocoa

class MyListViewController: UIViewController {

    var myList: MyList?

    private var collection: UICollectionView?

    {...}

    private func loadMyList() {
        let myList = retrieveMyListFromDb()
        guard
            let list = myList,
            let collection = collection
        else { return }

        let disposeBag = DisposeBag()

        Observable.from(list)
            .bind(
               to: collection.rx.items(
                cellIdentifier: HomeMovieCollectionViewCell.identifier, 
                cellType: HomeMovieCollectionViewCell.self)
             ) { (row, element, cell) in

         }
        .disposed(by: disposeBag)
    }

    private func retrieveMyListFromDb() -> MyList? {
        return RealmManager().objects(MyList.self)?.filter {
            $0.userId == 0
        }.first
    }

А это код MyList:

import Foundation
import Realm
import RealmSwift

@objcMembers
class MyList: Object {
    dynamic var userId: Int = 0
    var movies = List<Movie>()

    public override static func primaryKey() -> String? { return "userId" }
}

1 Ответ

0 голосов
/ 01 июля 2019

Благодаря пользователю Daniel T. я понял, что проблема в том, что функция rx.items представления коллекции ожидает массив элементов или список, и я использовал его с объектом. Ошибка, которую я получил, не была описательной во всем, что происходило.

Решение будет

 Observable.collection(from: list.movies)
    .bind(to: collection.rx.items(
           cellIdentifier: HomeMovieCollectionViewCell.identifier, 
           cellType: HomeMovieCollectionViewCell.self)
    ) { (row, element, cell) in

    }
    .disposed(by: disposeBag)
...