Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.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 避免在NSManagedObject类别中重复代码_Ios_Objective C_Core Data_Nsmanagedobject_Code Reuse - Fatal编程技术网

Ios 避免在NSManagedObject类别中重复代码

Ios 避免在NSManagedObject类别中重复代码,ios,objective-c,core-data,nsmanagedobject,code-reuse,Ios,Objective C,Core Data,Nsmanagedobject,Code Reuse,在我的实体模型中,我有一个顶级安装实体,它具有子卡关系。我还有一个Person实体,它具有子卡关系 我已经编写了一些代码,这些代码将对NSSet卡进行排序,以返回一个名为sortedCards的特定子集,该功能可以在安装级别或人员级别执行 对于exmaple,我希望能够拨打: NSArray *cards = [installation sortedCards]; 以及: NSArray *cards = [person sortedCards]; 我应该把代码放在哪里,这样我就不会在两个地

在我的实体模型中,我有一个顶级安装实体,它具有子卡关系。我还有一个Person实体,它具有子卡关系

我已经编写了一些代码,这些代码将对NSSet卡进行排序,以返回一个名为sortedCards的特定子集,该功能可以在安装级别或人员级别执行

对于exmaple,我希望能够拨打:

NSArray *cards = [installation sortedCards];
以及:

NSArray *cards = [person sortedCards];
我应该把代码放在哪里,这样我就不会在两个地方复制代码了?我首先将它放在我创建的Installation NSManagedObject类别中。但是如果我这样做,我还需要将代码复制到Person类别中

我是否应该输入NSSet类别并调用[installation.cards sortedCards]和[person.cards sortedCards]?那感觉也不对

非常感谢您的帮助


Duncan

您应该将此方法放在NSSet类别中,因为类别用于扩展基本功能。如果您需要在不同的位置对NSSet进行排序,则应该是NSSet类别工作,而不是其他对象或类。

您可以使用相同的NSSet类别。您还可以使用该方法创建一个抽象的NSManagedObject子类,如MySortingManagedObject,然后让您的实体子类使用它。放弃类别%*&并使用子类。因为这就是你想要的,一个子类。请参阅,以获得更简单的方法。