NSManagedObject子类属性的类别
NSManagedObject的子类属性是在其类别文件中创build的,因为类只能有方法,所以非常有线。 详情如下:
(1)。我在.xcdatamodeld文件中创build了一个名为BibleAudio的实体,具有以下几个属性。
(2)。 xcode生成的目标c文件是“BibleAudio + CoreDataProperties.h”,“BibleAudio + CoreDataProperties.m”和“BibleAudio.h”,“BibleAudio.m”如下:
(3)。 在“BibleAudio + CoreDataProperties.h”中,BibleAudio的属性在这里被声明为属性(见下文); 而在“BibleAudio.h”中则是空的。 据我所知,“BibleAudio + CoreDataProperties.h”是一个类别文件,只能在这里声明方法。 因此,我认为正确的方法是在“BibleAudio.h”中声明属性,如果你想为这个NSManagedObject子类添加方法,你应该使用一个类别来添加该方法。
BibleAudio + CoreDataProperties.h
BibleAudio.h
有人知道我的理解是对的吗? 或者如果我错了,那背后的逻辑是什么?
在以前的Xcode版本中,只为每个核心数据实体创build了一个类,例如BibleAudio.h/.m
“BibleAudio”类。 每次重新创build托pipe对象子类时,这些文件都被覆盖。 因此,要将自己的function添加到Core Data类中,必须在类上定义一个类别 (在单独的文件中)。
最大的缺点是你可以在类的类中添加方法 ,但不能添加实例variables 。 所以你不能添加一个简单的属性(由一个实例variables备份)。 一种可能的解决方法是在实体中定义一个瞬态属性 ,但这也有缺点。
现在 Xcode创build一个基本上为空的类“BibleAudio”(在BibleAudio.h/.m
),在BibleAudio + CoreDataProperties.h/.m
中BibleAudio + CoreDataProperties.h/.m
一个类别“BibleAudio(CoreDataProperties)”。类别文件包含所有的Core Data属性,并在重新创build托pipe对象子类时被覆盖。
类文件BibleAudio.h/.m
只创build一次,永远不会被覆盖。 您可以在其中添加function:方法与之前一样,也可以添加自定义属性和实例variables。 因为它是一个阶级,而不是一个类别,旧的限制不再适用。