Я сталкиваюсь с этой проблемой, когда пытаюсь сохранить простую строку в CoreData.
'+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'CurrentUser''
CoreData настроен нормально. И я использую следующий код для продолжения.
func saveName(name: String) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.persistentContainer.viewContext
if context == nil {
print("s")
} else {
print("d")
}
let entity = NSEntityDescription.insertNewObject(forEntityName: "CurrentUser", into: context)
entity.setValue(name, forKey: "name")
do {
try context.save()
print("saved")
} catch {
print("error")
}
}
Призвание:
saveName("Edwin")
Это код моего проекта, который до вчерашнего дня работал нормально. Интересно, что только что произошло. Внезапно он начинает показывать ту ошибку, о которой я упоминал выше.
Вещи, которые я пытался найти, проблема:
- Если я запускаю свой проект на симуляторе, данные сохраняются (работает нормально).
- Использование того же кода в другом проекте прекрасно работает как на симуляторах, так и на устройстве.
- Попытался удалить предыдущее приложение для сборки и запустить его снова. (тот же результат)
Вещи, которые я нашел:
- Контекст ManagedObject равен нулю, когда я запускаю код на устройстве, но не равен нулю, когда я запускаю его на симуляторе (таким образом, он отлично работает на симуляторе).
- Контекст ManagedObject равен nil, только когда я запускаю код из своего проекта (отлично работает как на симуляторе, так и на устройстве, если я запускаю код в другом проекте)
Помогите мне с этой странной проблемой.
Я использую Xcode 9.4.1
Свифт: 4.1
Заранее спасибо.