当我尝试向迁移中添加对象类,即迁移config.objectClasses = @"[ImageEntity.class]
时,会抛出以下异常:
if (!objectSchema) {
@throw RLMException(@"Object type '%@' is not persisted in the Realm. "
@"If using a custom `objectClasses` / `obejctTypes` array in your configuration, "
@"add `%@` to the list of `objectClasses` / `objectTypes`.",
className, className);
}
我是否以错误的方式将类添加到类列表(config.objectClasses)?或者是不够描述性的例外情况?可能是别的东西错了吗?
我的大多数模特都是这样的:
#import <Realm/Realm.h>
@interface ImageEntity : RLMObject
@property NSString *verticalLarge;
@property NSString *horizontalLarge;
@end
// This protocol enables typed collections. i.e.:
RLM_ARRAY_TYPE(ImageEntity)
领域手册说明了以下内容:
类子集 在某些情况下,您可能希望限制哪些类可以存储在特定领域中。例如,如果您有两个团队在应用程序的不同组件上工作,这两个组件都在内部使用Realm,那么您可能不希望必须协调它们之间的迁移。您可以通过设置RLMRealmConfiguration的objectClasses属性来执行此操作:
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.objectClasses = @[MyClass.class, MyOtherClass.class];
RLMRealm *realm = [RLMRealm realmWithConfiguration:config];
条件(如果发生):
首次运行 - 创建了领域(干净的构建,即没有以前的领域可用)。
迁移已完成,包括objectClasses配置。 我可以看到领域是在用户目录中创建的。
发生在
[customRealm beginWriteTransaction];
[customEntity createOrUpdateInRealm:customRealm withJSONArray:responseObject];
[customRealm commitWriteTransaction];
聚苯乙烯。没有objectClasses配置也不会发生同样的情况。
不知何故,特定领域(发生异常的地方)从默认领域继承对象类,而其他领域不继承对象类(就像使用config.objectClasses时一样)。