Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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_Objective C_Core Data - Fatal编程技术网

Ios 无实体核心数据的子类

Ios 无实体核心数据的子类,ios,objective-c,core-data,Ios,Objective C,Core Data,我有药物实体 MedicationEntity name dose weekdays //in case of daily and monthly this is null monthdays //in case of weekly and daily this is null frequencyType //Daily or weekly or monthly etc 我想用每周和每月的药物对这个实体进行分类,这样我就可以使用多态性。但我不想为它创建实体。原因是 我在这些课程中没

我有药物实体

MedicationEntity
name
dose
weekdays    //in case of daily and monthly this is null
monthdays   //in case of weekly and daily this is null
frequencyType  //Daily or weekly or monthly
etc
我想用每周和每月的药物对这个实体进行分类,这样我就可以使用多态性。但我不想为它创建实体。原因是

我在这些课程中没有额外属性,除了每周和每月用药都有相同的属性,但有一个额外属性,在每周我有工作日,在每月我有休息日。在每天服药的情况下,我必须在工作日和月发送null。因此,如果我对这些工作日和月属性进行子类化并将其移动到每周和月子类,我无法在请求中向服务器发送null,因为Dailymedition类没有已知参数。因此我保留了这些属性在药物实体中。现在,我想在核心数据模型中没有实体的情况下,对该实体进行每日、每周和每月的子类化。由于NSManagedObject上不允许alloc init,如果我对这些实体对象进行子类化,因为它们不在核心数据模型中,如何获取这些实体对象

还有别的办法吗?我的主要问题是在服务器请求中为工作日和月发送null,而且我认为在核心数据模型中创建空实体没有意义。

NSManagedObjects不能使用init:method,因为它们与数据库中的实体相关。您只能在数据库中创建实体并获取对她的引用。如果需要另一个实体,则应在模型中创建该实体


此外,还可以使用两个属性:days和repeatEvery,可以是7、30或其他任何值。或者您可以使用dictionary、repeatEvery:1=每日、repeatEvery:2=每月等,并在repeatEvery属性中只保留代码。

首先,您混淆了类和实体。可以有多个表示同一实体的类。模型中不需要多个实体。然而,就你所描述的情况而言,即使这样也太过分了


您在问题中列出的型号很好。frequencyType确定药物对象的状态顺便说一句,删除单词Entity it is redundant and contain practice.

NSManagedObject子类肯定可以使用init方法。但是他们必须在超级内存中调用-initWithEntity:insertIntoManagedObjectContext:。没有什么能阻止开发人员拥有一个带有自定义init…@MarcusS.Zarra的子类,这就是我说的。initWithEntity,所以您必须在数据库中有一个实体,才能这样做。不,这不是您所说的。你可能以为你说了,但你的回答毫无意义。你是决定投票否决我正确答案的人吗?谢谢@Marcus的回复。那么你是说我应该让另一个类说MedicaionModel并将其子类化,还是说我可以将MedicationEntity子类化,但在这种情况下,我如何才能得到我子类的对象。我想要子类化,因为我想划分工作在子类中。我是说你可以有多个子类,但你不应该。您的用例非常简单,您应该有一个具有状态信息的实体。就像服务器传递给你一样。不需要有多个实体或类。你好@Marcus谢谢,但实际上我的用例并没有那么简单。我有很多工作要做,比如调度、同步等。目前我有很多超负荷的类。现在我想将我的药物类划分为子类,这样我就可以划分每天、每周、每天的工作,每个月按单个职责在各自的类中创建一个。但问题是,我应该如何管理实体,就像我为MedicingEntity创建单独的类MedcationModel和另一个类一样,然后我需要分别管理它们。但是,如果我创建MedicingEntity的子类,那么我需要为子类创建一个空实体以获得适当的对象。任何子类NSManagedObject的可以通过正确实现-initWithEntity:InsertIntoManagedObject:Context来表示实体。但是,如果没有对核心数据的深入了解和理解,您将在设计过程中遇到问题。假设这三个对象的数据都是相同的,那么将它们作为一个有状态对象,然后在对象内部使用基于状态的私有方法是有意义的。拥有三种不同的对象类型只会导致问题和不必要的复杂性。非常感谢,我非常感谢您的帮助,感谢您的所有建议。我正在努力解决这个问题。是否有其他方法可以对代码进行子类化或划分。我真的需要将我的工作划分为子类,因为有很多不同的子类我的代码中有很多if语句,因为这种频率类型使我的项目变得非结构化。请帮我解决这个问题,并提出任何好的解决方案。我非常感谢你的帮助。