2016-05-15 17 views
0

verweigert Wenn der Einsatz Daten Realm benutzerdefinierte Datenbank mit PromptBereich kundenspezifische Datenbank Daten einfügen alert Permission

beenden app aufgrund nicht abgefangene Ausnahme 'RLMException' Grund: 'XX: Zugriff verweigert'

aber Die Daten wurden eingefügt.

Mein Code:

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

Antwort

0

Erstens (Falls dies könnte das Problem verursachen) es ist nicht wirklich gute Praxis, die Eigenschaften eines RLMRealmConfiguration Objekts zu ändern, das bereits zu einer RLMRealm Instanz zugewiesen. In diesem Fall wurde die gesamte Konfiguration innerhalb von [RLMRealm realmWithURL:] durchgeführt, so dass eine Modifikation nach einiger Zeit zu einer gewissen Instabilität führen konnte. In jedem Fall, sofern nicht readOnly auf JA gesetzt wurde, bevor Sie es in Ihrem Code festlegen, sollte dies hier keine Probleme verursachen.

Die einzige andere Sache, die ich denken kann, ist, dass Ihre fileURL möglicherweise fehlerhaft sind. Es gab einen Realm Java instance where a similar error message occurred wegen eines ungültigen Zeichens im Dateipfad.

Ich würde empfehlen, Ihre RLMRealm Instanz Erstellung aufzuräumen. Erstellen Sie eine neue RLMRealmConfiguration Instanz, stellen Sie ihre fileURL (und falls erforderlich), ihre readOnly Eigenschaften dort ein, und erstellen Sie dann die RLMRealm Instanz mit [RLMRealm realmWithConfiguration:error:]. Stellen Sie außerdem sicher, dass der Wert fileURL eine korrekte Datei-URL ist (d. H. Mit [NSURL fileURLWithString:] erstellt wurde) und auf ein Verzeichnis verweist, in dem Ihre App über Schreibzugriff verfügt.

Viel Glück!

Verwandte Themen