解决您的每个注释,并考虑codegen设置为
Manual/None
和
Category/Extension
:
-
是的,在任何一种情况下,您都可以根据自己的喜好自定义类(在限制范围内-例如,该类必须是NSManagedObject的子类-直接或间接)。
-
对的可以在模型编辑器中添加、修改或删除属性。在
类别/扩展
在这种情况下,将自动进行相关更改。在
在这种情况下,您可以手动更新扩展名(或类文件),也可以重做“创建NSManagedObject子类”,该子类将使用修改后的属性详细信息更新扩展名。如果不这样做,Xcode将无法识别新的属性详细信息,也不会为它们提供代码完成(如果尝试覆盖代码完成,也不会成功编译)。但与您认为的不同,这与标记为
@NSManaged
.
-
-
是的
类别/扩展
只需根据需要创建和定制类文件。
-
是的
类别/扩展
-
以任何方式更改属性定义(从Date更改为NSDate,或将其标记为private,或其他方式)只能在
因为派生数据中的扩展文件会被每个新生成覆盖,所以任何更改都会丢失。
-
同上
-
同上
-
最后一点:您不能随意更改特性定义的类型:在模型编辑器中指定的类型必须与特性定义中指定的类型相对应。您可以在同一类型的可选和非可选版本之间切换,也可以在日期和NSDate等之间切换,但从日期切换到字符串将不起作用。我怀疑您是正确的,这是由于Swift值类型和相应的Objective-C参考类型之间使用了桥接
as
here
.