Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 修改核心数据模型后重新创建类定义的更好方法?_Ios_Xcode_Core Data - Fatal编程技术网

Ios 修改核心数据模型后重新创建类定义的更好方法?

Ios 修改核心数据模型后重新创建类定义的更好方法?,ios,xcode,core-data,Ios,Xcode,Core Data,在XCode中设计核心数据模型时,可以通过以下方式自动生成NSManagedObject子类定义(.m和.h文件) 选择实体 从编辑器菜单中选择“创建NSManagedObject子类” 在这之后,您可能会在这些类中添加大量代码,如果之后由于某种原因不得不大量修改数据模型设置,该怎么办?要在数据模型上反映这些更改,有没有自动的方法?或者你必须手动完成所有事情 当前,如果我再次尝试从“编辑”菜单(自动)重新创建这些类定义,它将替换所有当前文件。所有添加的代码都将消失 我真的希望Xcode的未来版本

在XCode中设计核心数据模型时,可以通过以下方式自动生成NSManagedObject子类定义(.m和.h文件)

  • 选择实体
  • 从编辑器菜单中选择“创建NSManagedObject子类”
  • 在这之后,您可能会在这些类中添加大量代码,如果之后由于某种原因不得不大量修改数据模型设置,该怎么办?要在数据模型上反映这些更改,有没有自动的方法?或者你必须手动完成所有事情

    当前,如果我再次尝试从“编辑”菜单(自动)重新创建这些类定义,它将替换所有当前文件。所有添加的代码都将消失


    我真的希望Xcode的未来版本能够添加一个智能功能:自动更新默认类定义,而不会丢失添加的工作。也许我太懒了

    您遇到了一个常见问题。目前,您几乎无法使用Xcode创建托管对象子类。知道这一点,您可以:

    • 围绕它进行设计

      对于简单的情况,您可以使用类别向
      NSManagedObject
      子类添加功能(尽管不是状态)。类别文件中的代码显然不会在每次数据模型更改时被覆盖

    • 不要使用Xcode

      是一个非常好的工具,专门用来解决这个问题。它为每个实体创建两个类,而不是一个,允许Xcode在管理另一个实体的同时管理一个实体


    您可以创建一个具有不同名称的类,并将生成的字段粘贴到旧类中

    苹果似乎已经用XCode 7解决了这个问题:现在它自动创建实体和实体的一个类别,以及它的核心数据属性。重新生成时,它只更新类别,使实体类中的自定义代码不受损坏。看到这个了吗