小编She*_*tif的帖子

CoreData轻量级迁移问题

我用 Swift 5 编写了这个应用程序,并且已经在 App Store 中上线。

现在,我只想向一个现有实体添加一个新的单个布尔属性

为此,我遵循了以下步骤:

  1. 新增版本(它在其中自动创建了 Project 2.xcdatamodel 文件)
  2. 将此版本设置为默认版本
  3. 在此新版本文件中向实体添加一个属性。
  4. 将属性shouldMigrateStoreAutomaticallyshouldInferMappingModelAutomatically添加到AppDelegate类中的 NSPersistentContainer 中。

问题:

在应用程序中,我能够成功地将数据保存在 coredata 中并从任何 ViewController 中的 coredata 中检索数据,但是,如果应用程序从头打开,它无法找到以前的文件并重新创建 coredata 文件。

每当我打开应用程序时,它都会在 xCode 控制台中显示错误:

Connecting to sqlite database file at "/dev/null"
Run Code Online (Sandbox Code Playgroud)

应用程序委托代码:

// MARK: - Core Data stack

lazy var persistentContainer: NSPersistentContainer = {

let container = NSPersistentContainer(name: "Project")

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

container.loadPersistentStores(completionHandler: { (storeDescription, …
Run Code Online (Sandbox Code Playgroud)

core-data core-data-migration ios swift

5
推荐指数
1
解决办法
1198
查看次数

从导航控制器中删除除 current 之外的所有 ViewController

我正在用 Swift 编写一个 IOS 应用程序。

导航到 VC 后,我需要从导航控制器中删除除当前(屏幕上)之外的所有视图控制器。我正在使用下面的代码并且它工作正常。但是,它看起来不是优化的解决方案。任何更好的解决方案,如 map、filter 等语法糖:

 if let nc = appDelegate().baseNavigationController{
   nc.viewControllers = Array(nc.viewControllers.dropLast(nc.viewControllers.count-1)
 }
Run Code Online (Sandbox Code Playgroud)

ios swift

2
推荐指数
1
解决办法
3351
查看次数

将循环转换为快速的高阶函数

我写一个iOS应用夫特4.2 我通过循环阵列1和变更它的一个元件以及将这些元件阵列2

大批:

let array:[model] = []
let array2:[model] = []
Run Code Online (Sandbox Code Playgroud)

此数组的模型是:

class model: NSObject {
    var id:Int = 0
    var name:String=""
    var isChecked:Bool=false
}
Run Code Online (Sandbox Code Playgroud)

功能:

    func customCheckboxValueChangedWithID(_ id: Int, isChecked: Bool) {
array2.removeAll()
            //TODO, use sugar syntax/higher order function for this loop:
            for element in array{
                if(element.id==id){
                    element.isChecked=isChecked
if(element.isChecked){
array2.append(element)
}
                }
            }
            reloadCollectionView()
        }
Run Code Online (Sandbox Code Playgroud)

如何将其转换成快捷高阶功能,如mapflatMap等?

ios swift

2
推荐指数
1
解决办法
1592
查看次数

标签 统计

ios ×3

swift ×3

core-data ×1

core-data-migration ×1