迁移,但仍然在'RLMException'崩溃,原因:'迁移是必需的

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

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

         };
         config.objectClasses = @ [[User class],[UsersMenuItem class]];
         [RLMRealm migrateRealm:config];
     }

     ...
 }

我没有添加一个属性的用户对象,文件说,新领域应该automigrate,但我得到一个崩溃

 ***终止应用程序由于未捕获的exception“RLMException”,原因:'对象types'用户'需要迁移由于以下错误:
 - 属性“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:以NSExceptiontypes的未捕获exception终止

版本:0.95

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

 ***由于未捕获的exception“RLMException”而终止应用程序,原因是:“提供的模式版本0比上一次设置的版本3less。
 ***第一个投掷堆栈:

看起来像添加

[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]; } 

RLMRealmConfiguration作为值对象。 对其应用的修改不会自动生效到defaultConfiguration 。 您只能检索它的副本。 这意味着你必须使用setter来分享你的修改。