ios - 使用 Objective C 创建并从 Swift 获取的核心数据

标签 ios objective-c swift core-data realm-migration

我有一个使用核心数据并用 Objective C 编写的应用程序。这里我们不使用 persistentContainer。

现在我们用 Swift 重新编写了完整的应用程序,并且该应用程序正在使用 Realm。

我想将一个数据库实体从核心数据迁移到领域,并在此之后删除核心数据文件。

lazy var persistentContainer: NSPersistentContainer = {

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

 var personData: [NSManagedObject] = []
            let managedContext = self.persistentContainer.viewContext

            let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person")
            do {
                offlineData = try managedContext.fetch(fetchRequest)
            } catch let error as NSError {
                print("Could not fetch. \(error), \(error.userInfo)")
            }


            if  (personData.count) > 0 { // Insert DB into Relam

            }

我收到以下错误

错误:无法加载名为 HitList 的模型 CoreData:错误:无法加载名为 HitList 的模型

在获取期间抛出以下错误。

无法获取。错误域=Foundation._GenericObjCError Code=0“(null)”,[:]

出了什么问题?

最佳答案

您遇到的问题是 Objective C 中的 CoreData 堆栈将数据库保存到与 persistenceContainer 不同的路径。因此,它不会找到它,因为它正在寻找不同的位置。 您可以连接设备并使用 iExplorer 检查它,您就会看到。 要迁移它,您需要引用该位置。

关于ios - 使用 Objective C 创建并从 Swift 获取的核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48806586/

相关文章:

ios - 如何为 iPhone 5 显示加载 xib

ios - 如何在行的滑动操作配置中为 VoiceOver 添加辅助功能标签?

ios - autoresize = RM+BM 是什么意思?

iphone - 如何检查 UITextField 的文本是否是有效的电子邮件?

objective-c - 在导航 Controller 中推送 UIViewController 显示空 View

swift - UICollectionView 与状态栏重叠

ios - 有没有办法在 iOS 中使用照片框架锁定照片?

ios - IOS中的导航栈管理

objective-c - Xcode Autolayout - 横向/纵向约束

swift - 尝试在 View Controller 和 TableView Controller 之间传递数据时应用程序崩溃