领域 - 不能将类型子类的对象设置为父类的属性

时间:2015-05-15 15:34:09

标签: realm

大家好,

我遇到Realm的一个小问题,我有一个类“Contact”和一个子类“Person”定义为:

Person.h

#import <Realm/Realm.h>
#import "Contact.h"

RLM_ARRAY_TYPE(Person)

@interface Person : Contact

@property NSString * nickName;

@end

我有另一个名为“地址”的实体,它有一个“联系”属性(一个地址只能与一个联系人相关)。

Address.h

#import <Realm/Realm.h>
@class Contact;

RLM_ARRAY_TYPE(Address)

@interface Address : RLMObject

@property NSString * city;
@property NSString * country;

@property RLMContact *contact;

@end

问题是:当我尝试将“Person”对象设置为“Address”的联系人属性时,我收到此错误:

[address setContact:person];
'Can't set object of type 'Person' to property of type 'Contact'

我试图施展它,但仍然是同样的问题:

[address setContact:(Contact *)person];
'Can't set object of type 'Person' to property of type 'Contact'

我甚至在我的Address.h上定义Person类之后尝试过,但仍然存在同样的问题:

Address.h

#import <Realm/Realm.h>
@class Contact;
@class Person;

RLM_ARRAY_TYPE(Address)

@interface Address : RLMObject

@property NSString * city;
@property NSString * country;

@property RLMContact *contact;

@end

有人有想法吗?

先谢谢你们。

1 个答案:

答案 0 :(得分:2)

在Realm中,虽然您可以对RLMObject实体进行子类化,但这些子类不是多态的。也就是说,当您说要链接到Person对象时,不能替换Contact对象,因为Realm将它们视为完全独立的实体。