【发布时间】:2014-06-30 14:31:12
【问题描述】:
我的核心数据模型中有以 ICD_ 为前缀的实体。对于每个实体,我都有一个以 CD_ 为前缀的子类。以CD_为前缀的子类只实现静态getter。
当我使用 MagicalRecord 创建实体时,我必须使用前缀为 ICD_ 的类,而不是使用 CD_。否则,我有一个 SIGABRT:
"+entityForName: 在此找不到名为“CD_User”的实体 模型。”
如果我将我的 ICD_ 实体向下转换为我的 CD_Entity 它在 Objective-C 中工作。在 Swift 中,同样的事情会导致 SIGABRT。这很自然,因为分配的是父实体,而不是子类,因此通常不可能向下转换它。
所以我正在寻找一种解决方案,它允许将前缀为 CD_ 的子类与 MagicalRecord 一起使用。
【问题讨论】:
-
如果你的
CD_*子类只实现了静态getter,那么你为什么需要向下转型? -
我同意你的观点,在 Objective-C 中它可以工作,但在 Swift 中它会导致 SIGABRT。
-
这听起来像是 Obj-C 中的一个错误,而 Swift 正确处理它。
-
尝试使用类别而不是子类来扩展您的实体。
-
如果您将类别保存在单独的源文件中,则不会。
标签: ios objective-c core-data swift magicalrecord