CoreData краш приложения


#1

Начал изучать CoreData.
Решил повторить проект как начальную практику из этой статьи (на swift 5 Xcode 10.2) https://habr.com/ru/post/303512/ (сейчас на 3 части)
получаю ошибку

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Пробовал задействовать гугл и возможные решения - не помогло, подскажите пожалуйста и объясните, что не так?

Проект https://github.com/Constantine1995/infoManager


#2

у тебя там есть вот такая строчка:
let managedObjectContext = CoreDataManager.instance.persistentContainer.viewContext

На которой и происходит падение. Не знаю что именно под капотом происходит, но предположу что идет зацикливание. Во время создания класса идет создание константы, и снова обращение к классу итп.

Если сделать свойство ленивой переменной, то все пашет.

lazy var managedObjectContext: NSManagedObjectContext = {
		return CoreDataManager.instance.persistentContainer.viewContext
	}()

Но вообще, я бы переделал этот сервис.


#3

Спасибо, а что бы вы переделали, можете описать?


#4

ну вот этот кусок кода и переделал. все.


#5

Можно так записать:

lazy var managedObjectContext = CoreDataManager.instance.persistentContainer.viewContext

#6

Вы написали, что переделали бы сервис, что именно бы переделали)


#7

В двух словах не опишешь. Если ваш работает - пользуйтесь.
У каждого разработчика свое виденье и каждый последующий гнобит предыдущего. Так что… я промолчу. )))