在Swift 3中启用核心数据轻量级迁移

编程入门 行业动态 更新时间:2024-10-15 16:18:28
本文介绍了在Swift 3中启用核心数据轻量级迁移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

根据文章我已经阅读了启用核心数据轻量级迁移的正确方法是将选项传递给 addPersistentStoreWithType :

According to the articles I have read the correct way to enable core data light weight migrations is by passing options to addPersistentStoreWithType:

let mOptions = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] try coordinator!.addPersistentStoreWithType( NSSQLiteStoreType, configuration: nil, URL: url, options: mOptions)

但是在我的中Xcode 8 Swift 3 项目我找不到 addPersistentStoreWithType 的调用位置。这是我创建项目时生成的唯一核心数据代码:

But in my Xcode 8 Swift 3 project I can't find where addPersistentStoreWithType is called. This is the only core data code that was generated when I created my project:

// MARK: - Core Data stack lazy var persistentContainer: NSPersistentContainer = { /* The persistent container for the application. This implementation creates and returns a container, having loaded the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. */ let container = NSPersistentContainer(name: "Habits") container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? { // Replace this implementation with code to handle the error appropriately. // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. /* Typical reasons for an error here include: * The parent directory does not exist, cannot be created, or disallows writing. * The persistent store is not accessible, due to permissions or data protection when the device is locked. * The device is out of space. * The store could not be migrated to the current model version. Check the error message to determine what the actual problem was. */ fatalError("Unresolved error \(error), \(error.userInfo)") } }) return container }() // MARK: - Core Data Saving support func saveContext () { let context = persistentContainer.viewContext if context.hasChanges { do { try context.save() } catch { // Replace this implementation with code to handle the error appropriately. // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } }

如何使用Swift 3在Xcode 8中启用轻量级迁移?

推荐答案

您可以使用 NSPersistentStoreDescription 来执行此操作,这是所有这些选项移至的地方在Swift 3更新中。在调用 loadPersistentStores 之前执行此操作:

You do it using NSPersistentStoreDescription, which is where all those options moved to in the Swift 3 updates. Do this before the call to loadPersistentStores:

let description = NSPersistentStoreDescription() description.shouldInferMappingModelAutomatically = true description.shouldMigrateStoreAutomatically = true container.persistentStoreDescriptions = [description]

更多推荐

在Swift 3中启用核心数据轻量级迁移

本文发布于:2023-11-16 23:02:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1607857.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:核心   数据   Swift

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!