2016-10-06 3 views
1

У меня есть следующий код для одной из моих таблиц.Swift От 2 до 3 Migration Core Data NSManagedObject Класс

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "InventoryTableCell", for: indexPath as IndexPath) as! InventoryTableViewCell 

     let inventory : Inventory = fetchedResultsController.object(at: indexPath as IndexPath) as! Inventory 
     cell.inventoryItem = inventory 

     cell.drawCell() //uses passed inventoryItem to draw it's self accordingly. 

     return cell 
    } 

Я получаю сообщение об ошибке выполнения на cell.inventoryItem = inventory

Это говорит Thread 1: EXC_BAD_ACCESS (ошибка: CoreData: Ошибка: Не удалось вызвать назначенный инициализатору на класс NSManagedObject)

Он не сделал сделайте это быстро, так что не уверен, что это за ошибка. Я сделаю снимок экрана моей модели и созданного класса.

Я понятия не имею, как исправить ошибку, поскольку это сработало раньше. Что изменилось?

enter image description here enter image description here enter image description here

+0

Я не знаю, была ли инициализирована переменная «inventoryItem» в классе «InventoryTableViewCell». Если вы инициировали это, измените это на необязательную переменную. Это может вызвать и ту же проблему. –

ответ

1

Похоже, я решил мою проблему, когда вы определяете элементы, которые вы должны дать контекст для него сейчас, или это не будет работать.

В коде, который я не показывал здесь для своего InventoryTableViewCell, я неправильно определил параметр inventoryItem.

Вот правильный способ сделать это.

//Set inventory item as an InventoryType within the correct context 
    var inventoryItem = Inventory(context: (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext) 
Смежные вопросы