ios - 核心数据 NSManagedObject 就像一个基类

标签 ios core-data

我有一个基类 @interface BaseMailbox : NSManagedObject 我有它的两个 child 。 似乎只能通过下一种方式创建我的类的对象:

BaseMailbox *mailbox;
mailbox = [NSEntityDescription
                                           insertNewObjectForEntityForName:@"BaseMailbox"
                                           inManagedObjectContext:context];

所以看起来 Core Data 对象不支持多态性?

编辑:

例如,在创建我的邮箱对象之前,我使用了:

 account = [[GoogleMailbox alloc]
                   initWithFullName

当我调用 account.connect - 它是与 gmail 参数的连接。

但现在 account 不引用任何子对象,当我调用 account.connect - 它调用基类方法。

EDIT2

BEFORE CORE DATA:

if([_emailAddress.text endsWith:SUFFIX_GOOGLE]){

    account = [[GoogleMailbox alloc]
               initWithFullName:_fullName.text emailAddress:_emailAddress.text password:_password.text];

}else if([_emailAddress.text endsWith:SUFFIX_YAHOO]){

    account = [[YahooMailbox alloc]
               initWithFullName:_fullName.text emailAddress:_emailAddress.text password:_password.text];

}else{

..........

BOOL success = [account connect]; // GoogleMailbox or YahooMailbox or ...,depending the account refers to.

核心数据:

 BaseMailbox* account = [NSEntityDescription
                                      insertNewObjectForEntityForName:@"MailBox"
                                      inManagedObjectContext:context];

    }else{

..........

  BOOL success = [account connect]; // BaseMailbox

最佳答案

核心数据实体支持继承概念。 实体“A”可以定义为另一个实体“B”的“父实体” 数据模型检查器。这反射(reflect)在相应的托管对象子类中: BA 的子类。

所以你可以定义一个实体“BaseMailbox”并使它成为 “GoogleMailbox”和“YahooMailbox”。所有子类共有的属性是 在父实体中定义。

enter image description here

然后

[NSEntityDescription insertNewObjectForEntityForName:@"GoogleMailbox"
                                  inManagedObjectContext:context]

返回一个 GoogleMailbox 对象,它是 BaseMailBox 的子类。

关于ios - 核心数据 NSManagedObject 就像一个基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18288427/

相关文章:

iphone - 如何发布我的更新 (1.1) 而不在 iTunes Connect 中发布 1.0?

objective-c - 如何检查方法 touchesBegan :withEvent: 中的特定事件

objective-c - 手指画的效率问题

objective-c - 可以绑定(bind)到 NSDatePicker 的 timeInterval 属性吗?

ios - 必须从 CoreData 调用 fetch 两次

ios - 如何为 UIView 制作基于图像的平铺背景,使其无法缩放?

ios - RestKit在映射或实际插入CoreData DB之前比较本地对象和远程对象

ios - CoreData 和最常使用/标记的词

iphone - NSManagedObject 不兼容的指针类型警告

ios - [__NSCFString objectForKey :]: crash on textfield search