我在应用升级方案中遇到崩溃。它给出了以下错误和警告。但是这个问题只有在我安装了AppStore版本时才会发生,最重要的是我安装了新的testflight版本。 如果我在AppStore构建上安装开发人员构建,那么它可以正常工作。
错误:
[__ NSArrayM UTF8String]:无法识别的选择器发送到实例
警告:在写入事务期间释放了RLMRealm实例,并且已回滚所有挂起的更改。确保在写入事务期间保留对RLMRealm的引用。
当您点按应用程序图标时,它会立即崩溃,所以,我没有任何堆栈跟踪。
领域版本:0.96.3& Xcode版本:7.3
以下是我的迁移代码。
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.schemaVersion = 3;
if (oldSchemaVersion < 2)
{
[migration enumerateObjects:DB_Class1.className
block:^(RLMObject *oldObject, RLMObject *newObject) {
newObject[@"thisIsArray_1"] = nil;
}];
[migration enumerateObjects:DB_Class2.className
block:^(RLMObject *oldObject, RLMObject *newObject) {
newObject[@"thisIsInt_1"] = 0;
newObject[@"thisIsInt_2"] = 0;
newObject[@"thisIsInt_3"] = 0;
}];
}
以上所有newObjects
仅在此版本中添加。
更新1:我可以看到deleteRealmIfMigrationNeeded
的android。 iOS中有任何eqvivalent吗?我只找到了deleteAllObjects
。如果是这样,我可以简单地删除旧的领域数据并保存新的领域数据。
感谢。
答案 0 :(得分:1)
Realm Cocoa在版本0.102.0中添加了deleteRealmIfMigrationNeeded
选项(在RLMRealmConfiguration
上)。这应该可以让您回避迁移问题。请参阅更改说明here。