gpt4 book ai didi

ios - 向核心数据对象或属性添加弃用

转载 作者:行者123 更新时间:2023-11-28 21:54:34 26 4
gpt4 key购买 nike

我们正在对核心数据模型进行重大更改。有几个属性我们不想再使用了。例如,SomeObject 的以下 values

但是,我们还不想简单地从我们的 Core Data 中删除 values,因为我们在项目中到处都在使用它。

我想知道是否可以在 Core Data 中的某些属性中添加一个 deprecation 标记,以便我们在使用它们时得到一些警告。

@interface SomeObject : _SomeObject
// ...
@end

@interface _SomeObject : NSManagedObject {}
@property (nonatomic, strong) NSNumber* values;
// and a massive amount of auto-generated code by core data
@end

然后我看到了这个post about how to flag a method as deprecated in objective C .我尝试在 _SomeObject.h 中添加弃用标签,例如:

@interface _SomeObject : NSManagedObject {}
@property (nonatomic, strong) NSNumber* values __attribute__((deprecated));
// and a massive amount of auto-generated code by core data
@end

它的工作方式与我们希望的完全一样,我们到处都有 'values' is deprecated 警告。因此,我们将能够专注于所有这些警告,并在下一次发布之前修复所有这些警告。但是有一件事让我感到不太舒服,那就是我们正在修改 Core Data 自动生成的代码。

最后,我的问题是:

是否可以在不触及 _SomeObject.h 文件的情况下向方法添加弃用?

最佳答案

不至于直接产生编译警告;手动修改接口(interface)文件是正确的方法。除了可能重新生成文件并丢失属性之外,您不会引入任何问题。

一个可能更可取的迂回替代方案是重命名属性,例如到 valuesDeprecated。将规范名称保留为 values 以进行适当的迁移。使用已弃用的属性 values_SomeObject 上编写一个类别并实现它只是为了使用 valuesDeprecated 作为存储。

然后现有代码应该得到警告,新代码只能通过使用其中包含“已弃用”一词的属性来避免警告。所以作者需要故意粗心。

关于ios - 向核心数据对象或属性添加弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com