相关疑难解决方法(0)

核心数据迁移 删除实体数据

我想在核心数据中进行轻量级迁移。我正在向一个运行良好的实体添加一个属性。

但我希望在此特定迁移后删除该实体的数据(该实体表中包含的所有对象)。

我经历了这个问题,但是这种方法看起来不太好,因为我想将将来需要的每个迁移的逻辑分开。

我想到了一种直接重命名实体但不指定实体的方法,rename Identifier以便核心数据将其处理为删除实体和添加新实体,但这不会成为未来迁移中每个类似情况的永久解决方案.

有没有什么办法可以通过UI直接删除数据,xcdatamodeld或者还有其他方法吗?

core-data core-data-migration ios xcdatamodel

7
推荐指数
2
解决办法
3151
查看次数

Core Data自定义策略的选择器语法是什么?

我正在尝试使用Core Data实现非常基本的自定义迁移.最初将单个属性创建为Integer 16值为0或1.在新模型版本中,此属性已更改为,Boolean并且下面的迁移策略应处理它.我看过几个用Swift编写的例子,它们似乎没有使可访问性公开/公开或添加@objc以使Objective-C可以访问它.我这样做是为了消除任何不起作用的原因.

我使用以下表达式为实体映射创建了映射模型和自定义策略.

FUNCTION($entityPolicy, "convertInteger:" , $source.active)

它一直失败,因为无法识别选择器.具体来说,它会收到以下错误.

unrecognized selector sent to instance

我尝试了很多变化.

  • convertInteger:
  • 转换(整数:)
  • convertInteger(_ :)

我无法获得任何变化.这个表达式的有效选择器是什么?

在Swift代码中,我在初始化程序中放置了一个断言并且它通过了,但是我不能在策略的表达式中使用相同的选择器.

import CoreData

@objc
open class IntegerToBooleanMigrationPolicy: NSEntityMigrationPolicy {

    @objc
    public override init() {
        super.init()
        assert(responds(to: #selector(convert(integer:))), "Policy does not respond to selector!")
    }

    @objc
    open func convert(integer: Int16) -> Bool {
        debugPrint("Converting \(integer) to boolean")
        return integer == 1
    }

}
Run Code Online (Sandbox Code Playgroud)

core-data ios swift swift3

3
推荐指数
1
解决办法
349
查看次数