限制哪些类可以存储在特定领域

时间:2015-11-23 00:34:54

标签: ios realm

当我尝试向迁移中添加对象类,即迁移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];

条件(如果发生):

  1. 首次运行 - 创建了领域(干净的构建,即没有以前的领域可用)。

  2. 迁移已完成,包括objectClasses配置。 我可以看到领域是在用户目录中创建的。

  3. 发生在

        [customRealm beginWriteTransaction];
        [customEntity createOrUpdateInRealm:customRealm withJSONArray:responseObject];
        [customRealm commitWriteTransaction];
    
  4. 聚苯乙烯。没有objectClasses配置也不会发生同样的情况。

    不知何故,特定领域(发生异常的地方)从默认领域继承对象类,而其他领域不继承对象类(就像使用config.objectClasses时一样)。

0 个答案:

没有答案