2016-05-15 83 views
0

當使用提示境界自定義數據庫插入數據警報權限被拒絕

終止應用程序由於未捕獲的異常「RLMException」境界自定義數據庫插入數據,原因是:「XX:權限被拒絕」

但數據已被插入。

我的代碼:

RLMRealm *realm = [RLMRealm realmWithURL:[self dataBasePath:kRealmCustomDBName]]; 
realm.configuration.readOnly = NO; 
NSLog(@"path = %@",realm.configuration.fileURL); 
WEAKSELF 
[realm transactionWithBlock:^{ 
    NSDictionary *dic = @{ 
          kRealmPrimaryKey:[weakSelf ret64bitString], 
          kRealmAvatarData:hiSchool.avatar, 
          kRealmTitle:hiSchool.title, 
          kRealmSubtitle:hiSchool.subTitle, 
          kRealmAge:hiSchool.age, 
          kRealmDate:hiSchool.date, 
          kRealmMale:hiSchool.isMale, 
          kRealmWeight:hiSchool.weight, 
          kRealmHeight:hiSchool.height 
          }; 
    [HiSchool createInRealm:realm withValue:dic]; 
}]; 

回答

0

首先,(如果這可能是導致該問題),它不是真正改變一個已經被分配給RLMRealm實例RLMRealmConfiguration對象的屬性很好的做法。在這種情況下,所有配置都在[RLMRealm realmWithURL:]內部執行,因此在事實之後修改它可能會導致一些不穩定。在任何情況下,除非您在代碼中設置readOnly之前設置爲YES,否則這應該不會引起任何問題。

我能想到的唯一的另一件事是,您的fileURL可能是畸形的。由於文件路徑中存在非法字符,因此有Realm Java instance where a similar error message occurred

我建議您清理RLMRealm實例創建。創建一個新的RLMRealmConfiguration實例,將其實例fileURL(如果有必要)設置爲readOnly,然後使用[RLMRealm realmWithConfiguration:error:]創建RLMRealm實例。另外,請確保您的fileURL值是正確的文件URL(即使用[NSURL fileURLWithString:]創建),並且指向您的應用具有寫入權限的目錄。

祝你好運!

相關問題