‘NSInvalidArgumentException’, reason: ‘+entityForName: nil is not a legal NSManagedObjectContext〜というエラー

CoreDataを利用してデータの保存を行おうとした際に起こったエラーです。

‘NSInvalidArgumentException’, reason: ‘+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name ‘MyClassName”

バージョン

Swift 4.2
Xcode 10.1

原因と解決方法

AppDelegate.swift内で以下のように記述していたのですが、これが原因だった様子。


lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "Model")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()

let container = NSPersistentContainer(name: "Model")

この”Model”の部分をxcdatamodeldファイルのファイル名に一致させていなかったことが原因でした。

僕の場合は「Model.xcdatamodeld」という名前だったので、NSPersistentContainer(name: “Model”)としました。

コメント