当前位置:  开发笔记 > IOS > 正文

类别中的NSManagedObject子类属性

如何解决《类别中的NSManagedObject子类属性》经验,为你挑选了1个好方法。

NSManagedObject子类属性在其类别文件中创建,该文件非常有线,因为类别只能有方法.详情如下:

(1).我在.xcdatamodeld文件中创建了一个名为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 + CoreDataProperties.h

BibleAudio.h BibleAudio.h

有人知道我的理解是否正确吗?或者如果我错了,那背后的逻辑是什么?



1> Martin R..:

在之前的Xcode版本中,只为每个Core Data实体创建了一个类,例如,"BibleAudio"类BibleAudio.h/.m.每次重新创建托管对象子类时,都会覆盖这些文件.因此,要将自己的功能添加到Core Data类,您必须在上定义一个类别(在单独的文件中).

最大的缺点是您可以在类类别中添加方法,但不能添加 实例变量.因此,您无法添加简单属性(由实例变量备份).一种可能的解决方法是在实体中定义瞬态属性,但这也有缺点.

现在 Xcode创建了一个类"BibleAudio"(in BibleAudio.h/.m),它基本上是空的,BibleAudio + CoreDataProperties.h/.m 类别文件中的类别"BibleAudio(CoreDataProperties)" 包含所有Core Data属性,并在重新创建托管对象子类时被覆盖.

类文件BibleAudio.h/.m只创建一次,永远不会被覆盖.您可以在那里添加功能:方法和以前一样,还有自定义属性和实例变量.因为它是一个类而不是一个类别,旧的限制不再适用.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有