Строка CoreData не загружается и не отображается в uicollectionviewcell - PullRequest
0 голосов
/ 03 октября 2019

Мой код имеет два контроллера вида. Первый контроллер представления сохраняет строку в основных данных. Контроллер второго представления должен отображать строку на метке в ячейке uicollectionview. Проблема в том, что во 2-м контроллере представления ни одна из коллекционных ячеек даже не появляется. Строка не отображается. Ссылка ниже является ссылкой на мой проект.

https://github.com/redrock34/uicollectionViewCellAPpear

1 Ответ

0 голосов
/ 03 октября 2019

Не удалось найти место, куда вы загружаете свои вещи из БД. У вас есть var itemName : [NSManagedObject] = [] в ViewController, но нет такого места, где вы можете установить какое-либо значение для этой переменной. Вот почему у вас нет ячейки для отображения - когда представление коллекции запрашивает контроллер представления о количестве элементов в разделе, оно всегда возвращает 0 (опять же, потому что вы никогда не устанавливали значение itemName, поэтому оно пустое).

Upd: Для загрузки данных вы можете сделать следующее.

В соответствии с проектом вы можете создать метод загрузки данных в вашем ViewController с помощью кода, подобного следующему:

func loadData() {
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
        let managedContext = appDelegate.persistentContainer.viewContext
        let fetch = NSFetchRequest<Item>(entityName: "Item")
        do {
            self.itemName = try managedContext.fetch(fetch)
        }
        catch {
            print("Could not load. \(error)")
        }
    }

И затем вы должны вызвать этот новый func loadData() в viewDidLoad ViewController сразу после строки super.viewDidLoad().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...