ich meine App von Realm 0.9x но 2.0.x aktualisiert Jetzt habe ich eine Menge Fehlerberichte haben von 8, 9 und 10 iOS-Geräte auf Crashlytics über schwerwiegende Ausnahme:Realm darf nicht null
Fatal Exception: RLMException
Realm must not be nil
Stack-Ablaufverfolgung sieht wie folgt aus:
RLMObjectStore.mm line 81 RLMGetObjects
RLMObject.mm line 154 +[RLMObject objectsInRealm:withPredicate:]
RLMObject.mm line 146 +[RLMObject objectsInRealm:where:args:]
RLMObject.mm line 140 +[RLMObject objectsInRealm:where:]
Sessions.m line 88 +[Sessions resultWithSessionsWhere:]
Sessions.m line 128 +[Sessions activeSession]
Sessions.m line 102 +[Sessions appLaunched]
AppDelegate.m line 60 -[AppDelegate application:didFinishLaunchingWithOptions:]
Ich kann Fehler in Debugumgebung nicht reproduzieren. Es hat ungefähr 30-40% der Benutzer berührt (überhaupt nicht), und ich sehe aus wie nur alte Benutzer berührt werden.
Es gibt kein Reich Objekt in dieser Methode:
/**
* Create and returns Realm configuration for sessions database
*/
+(nonnull RLMRealmConfiguration*)realmConfigurationForSessions
{
RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
// Use the default directory, but replace the filename with the 'sessions.realm'
config.fileURL = [NSURL
URLWithString:[[[config.fileURL.absoluteString stringByDeletingLastPathComponent]
stringByAppendingPathComponent:@"sessions"]
stringByAppendingPathExtension:@"realm"]];
return config;
}
+(nullable RLMRealm*)realmForConfiguration:(nullable RLMRealmConfiguration*)config
{
if (!config) {
return nil;
}
NSError *error;
// Open the Realm with the configuration
RLMRealm *realm = [RLMRealm realmWithConfiguration:config
error:&error];
if (error) {
DLog(@"error: %@", error.localizedDescription);
}
return realm;
}
Fragen: 1) Was ist die Ursache für diese seltsame Frage? 2) Wie kann ich in dieser Situation fehlerfrei und nil realm value behandeln?
Ok, es ist gut. Aber was ist mit der Fehlerbehandlung? Wie kann ich eine stabile funktionierende App erhalten, wenn ein Fehler auftritt? –
'[RLMRealm realmWithConfiguration: error:]' gibt 'nil' zurück, wenn ein Fehler auftritt, so dass es sehr einfach zu erkennen ist, ob ein Fehler aufgetreten ist, der die Generierung des Realms verhindert, so dass Sie ihn mildern können. In diesem Fall (wenn nicht an anderer Stelle ein anderes Problem auftritt) wird es nur dann auftreten, wenn die 'fileURL' nicht korrekt formatiert ist und auf einen gültigen Speicherort auf der Festplatte verweist. In diesem Fall kann es hilfreich sein, den 'NSURL'-Wert zu überprüfen, bevor Sie ihn an Realm übergeben. :) – TiM