最近收到了很多关于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;
}
希望能帮到大家

本文解决了Realm在iOS应用中初始化时遇到的Nospaceleftondevice错误,通过使用try-catch捕获异常并清理缓存,再尝试初始化,有效避免了应用崩溃,为用户提供更好的体验。
6万+

被折叠的 条评论
为什么被折叠?



