大家好,
我遇到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
有人有想法吗?
先谢谢你们。
答案 0 :(得分:2)
在Realm中,虽然您可以对RLMObject
实体进行子类化,但这些子类不是多态的。也就是说,当您说要链接到Person
对象时,不能替换Contact
对象,因为Realm将它们视为完全独立的实体。