领域 - 无法将子 class 类型的对象设置为父 class 类型的 属性
Realm - Can't set object of type subclass to property of type parent class
大家好,
我遇到了一个 Realm 的小问题,我有一个 class "Contact" 和一个 subclass "Person" 定义为:
Person.h
#import <Realm/Realm.h>
#import "Contact.h"
RLM_ARRAY_TYPE(Person)
@interface Person : Contact
@property NSString * nickName;
@end
我有另一个名为 "Address" 的实体,它有一个 "Contact" 属性(一个地址只能与一个联系人相关)。
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 class 之后尝试过,但仍然是同样的问题:
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
有人有想法吗?
在此先感谢大家。
在 Realm 中,虽然您可以对 RLMObject
实体进行子类化,但这些子类不是多态的。也就是说,当您说要链接到 Contact
对象时,您不能替换 Person
对象,因为 Realm 将它们视为完全独立的实体。
大家好,
我遇到了一个 Realm 的小问题,我有一个 class "Contact" 和一个 subclass "Person" 定义为:
Person.h
#import <Realm/Realm.h>
#import "Contact.h"
RLM_ARRAY_TYPE(Person)
@interface Person : Contact
@property NSString * nickName;
@end
我有另一个名为 "Address" 的实体,它有一个 "Contact" 属性(一个地址只能与一个联系人相关)。
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 class 之后尝试过,但仍然是同样的问题:
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
有人有想法吗?
在此先感谢大家。
在 Realm 中,虽然您可以对 RLMObject
实体进行子类化,但这些子类不是多态的。也就是说,当您说要链接到 Contact
对象时,您不能替换 Person
对象,因为 Realm 将它们视为完全独立的实体。