最近收到了很多关于realm 崩溃的问题,最多的问题就是初始化的时候 No space left on device。
原代码
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
config.schemaVersion = 1;
config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {
if (oldSchemaVersion < 1) {
[migration deleteDataForClassName:JLBConversation.className];
}
};
[RLMRealmConfiguration setDefaultConfiguration:config];
[RLMRealm defaultRealm];//监控到这里有崩溃
崩溃信息如下
处理结果:
利用try catch,当崩溃的时候清理一下App 的缓存,然后再次调用一次初始化,如果还崩溃建议在App启动后主页提示用户存储不够建议清理后继续使用App.
修改后的代码如下
BOOL haveException = NO;//时候有异常
@try {
[RLMRealm defaultRealm];
} @catch (NSException *exception) {
//清理存储
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
}];
[KTVHTTPCache cacheDeleteAllCaches];
[JLBPhoneInfo applicationClearCaches:^(BOOL bResult) {
}];
haveException = YES;
}
if (haveException) {
BOOL tHaveException = NO;
@try {
[RLMRealm defaultRealm];
} @catch (NSException *exception) {
tHaveException = YES;
}
haveException = tHaveException;
}
希望能帮到大家