【发布时间】:2021-10-02 16:56:56
【问题描述】:
我正在处理使用 Core Data 的大量现有代码库。
我有扩展 NSManagedObject 并保留在 Core Data 中的类型。
我需要完全迁移出 Core Data(原因不重要,但我有充分的理由)。但是,我有一个基本的限制。
- 我无法将这些类型更改为 NSObject(某些用例必须继续使用 Core Data)。
- 这些 NSManagedObject 类型在我的业务逻辑中大量传递。我不想重构该业务逻辑并引入新的/“非托管”类型。
假设我有一些类型Foo,它是一个 NSManagedObject。我试过类似的东西:
Foo *foo = [[Foo alloc] init];
foo.name = "beebunny";
foo.name 调用导致崩溃。
name 是 @dynamic 并且有一个自定义设置方法,例如:
- (void)setFoo:(Foo *)fooIn
{
[self setFoo:fooIn];
}
[self setFoo:fooIn]; 调用导致异常(未知选择器)。
如果我正在使用任何扩展 NSManagedObject 的类型,我似乎必须使用 Core Data。
对于我想要关闭核心数据的迁移类型,是否有合适/推荐的模式?
【问题讨论】:
-
“迁移出 CoreData”是什么意思?是否希望停止持久化数据?
-
我将继续在持久存储中持久化数据。我将不再使用 Core Data,而是使用售卖的库。
标签: ios core-data nsmanagedobject