2
- (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 领域,第一件事
    {
        RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
        config.schemaVersion = 2;
        config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {

        };
        config.objectClasses = @[[用户类], [UsersMenuItem 类]];
        [RLMRealm migrateRealm:config];
    }

    ...
}

我确实向用户对象添加了一个属性,文档说新领域应该自动迁移,但我遇到了崩溃

*** 由于未捕获的异常“RLMException”而终止应用程序,原因:“由于以下错误,对象类型“用户”需要迁移:
- 属性“realtedMenuItems”已添加到最新的对象模型中。
*** 首先抛出调用堆栈:
(0x1838ad900 0x182f1bf80 0x10015db3c 0x10014aa60 0x100149a70 0x100116500 0x1000a6488 0x1000f1664 0x1885a00c0 0x18859fcc4 0x100039568 0x188615704 0x188844130 0x1888484b8 0x1888455c0 0x184e63790 0x184e63b10 0x183864efc 0x183864990 0x183862690 0x183791680 0x18860e580 0x188608d90 0x1000b7430 0x1833328b8)
libc++abi.dylib:以 NSException 类型的未捕获异常终止

版本:0.95

注意:当我更新到 0.96 时,我得到

*** 由于未捕获的异常“RLMException”而终止应用程序,原因:“提供的架构版本 0 小于上次设置的版本 3。”
*** 首先抛出调用堆栈:
4

2 回答 2

1

看起来像添加

[RLMRealmConfiguration setDefaultConfiguration:config];

解决了这个问题,虽然不知道为什么

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Realm
    {
        RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
        config.schemaVersion = 4;
        config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {

        };
        NSError * error = [RLMRealm migrateRealm:config];
        if (error) {
            NSLog(@"Error migrating realm %@", error);
        }
        [RLMRealmConfiguration setDefaultConfiguration:config];
    }
于 2015-12-12T18:03:50.163 回答
1

RLMRealmConfiguration充当值对象。对其应用的修改,不会自动对defaultConfiguration. 您只能检索它的副本。这意味着您必须使用 setter 来分享您的修改。

于 2015-12-14T10:33:25.560 回答