Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将核心数据数据库导入新项目_Swift_Core Data_Magicalrecord_Core Data Migration - Fatal编程技术网

Swift 将核心数据数据库导入新项目

Swift 将核心数据数据库导入新项目,swift,core-data,magicalrecord,core-data-migration,Swift,Core Data,Magicalrecord,Core Data Migration,我在另一个项目中将Objective-C应用程序重写为Swift,在导入核心数据数据库时遇到了问题(获取请求返回空结果),在以前的项目中,核心数据数据库由MagicalRecord处理 以下是我正在做的事情: 已将数据库模型文件复制到新项目中 将该模型文件添加到编译源代码中,并在构建阶段复制捆绑包资源 在模型文件中将实体代码生成语言从objc更改为swift 创建NSManagedObject子类 我检查过的东西: PersistentStore的URL与上一个项目中的URL相同(沙盒的应用程

我在另一个项目中将Objective-C应用程序重写为Swift,在导入核心数据数据库时遇到了问题(获取请求返回空结果),在以前的项目中,核心数据数据库由MagicalRecord处理

以下是我正在做的事情:

  • 已将数据库模型文件复制到新项目中

  • 将该模型文件添加到编译源代码中,并在构建阶段复制捆绑包资源

  • 在模型文件中将实体代码生成语言从objc更改为swift

  • 创建NSManagedObject子类

  • 我检查过的东西:

    • PersistentStore的URL与上一个项目中的URL相同(沙盒的应用程序标识符除外)
    • 模型文件的名称与上一个项目中的名称相同
    • 目标、方案、项目和捆绑id与上一个项目中的相同
    • 整个核心数据堆栈(下面的代码)的初始化工作正常
    下面是我初始化堆栈的方式(当然,这里的字符串是由于已知原因而更改的,它们在项目中是有效的):


    PersistentStore的url在当前项目和上一个项目中不相同

    我以为是,但不是。 MagicalRecord的方法之一--
    NSPersistentStore.MR_defaultLocalStoreUrl
    ——返回了无效的NSURL


    对于未来的世代-通过Xcode设备管理器下载应用程序的IPA,并手动查找其URL所在的位置

    到底是什么问题?我实际上无法访问以前的应用程序保存的任何数据。每个获取请求的结果都是空的。@loup4如果您已经解决了问题,请将其作为答案发布,请不要为此编辑您的问题。@GrumpyCrouton,好的!
        lazy var applicationDocumentsDirectory: URL = {
            let urls = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
            var applicationDocumentsDirectoryRaw = urls[urls.count-1]
            applicationDocumentsDirectoryRaw.appendPathComponent("App_Name", isDirectory: true)
            return applicationDocumentsDirectoryRaw
        }()
    
        lazy var managedObjectModel: NSManagedObjectModel = {
            let modelURL = Bundle.main.url(forResource: "Model_Name", withExtension: "momd")!
            return NSManagedObjectModel.init(contentsOf: modelURL)!
        }()
    
        lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
            let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
            let url = self.applicationDocumentsDirectory.appendingPathComponent("CoreDataStore.sqlite")
            var failureReason = "There was an error creating or loading the application's saved data."
            do {
                try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: [NSMigratePersistentStoresAutomaticallyOption: true])
            } catch {
                var dict = [String: AnyObject]()
                dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
                dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
    
                dict[NSUnderlyingErrorKey] = error as NSError
                let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
                NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
                abort()
            }
    
            return coordinator
        }()
    
        lazy var managedObjectContext: NSManagedObjectContext = {
            let coordinator = self.persistentStoreCoordinator
            var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
            managedObjectContext.persistentStoreCoordinator = coordinator
            return managedObjectContext
        }()