2016-06-25 10 views
0

Ich versuche, ein einfaches Objekt mit Realm zu speichern, aber die App stürzt immer ab, wenn ich versuche, eine Schreibtransaktion zu erstellen, selbst wenn sie in einen Do Catch-Block eingeschlossen ist.App stürzt SIGABRT beim Versuch ab, Realm zu verwenden

let theme = Theme() 
    theme.name = "Custom Theme" 
    theme.backgroundColor = backgroundColor 
    theme.accentColor = accentColor 
    theme.numberColor = numColor 
    theme.functionColor = funcColor 

    // Add to the Realm inside a transaction 
    do { 
     try Realm().write { 
      do { 
       try Realm().add(theme, update: true) 
      } catch { 
       print("Error saving data") 
      } 
     } 
    } catch { 
     print("Realm.write error") 
    } 

Hier ist das Objekt 'Thema'

class Theme : Object { 
dynamic var name = "" 
dynamic var backgroundColor = "" 
dynamic var accentColor = "" 
dynamic var numberColor = "" 
dynamic var functionColor = "" 

override static func primaryKey() -> String? { 
    return "name" 
} 

}

Hier ist ein Screenshot des Absturzes SIGABRT Crash

EDIT: Der obige Code, dass der Absturz nur verursacht Wird ausgeführt, wenn auf eine Schaltfläche geklickt wird. Es gibt auch keine Konsolenausgabe. Ich bringe Reich in Via CocoaPods.

+0

Der Screenshot hilft nicht wirklich. Können Sie das in der Konsole angezeigte Crash-Protokoll teilen? Tritt der Absturz beim Start oder nur beim Ausführen des Codes im Block ein? – xoudini

+0

nur beim Ausführen dieses Codeblocks und nichts in der Konsole –

+1

Bitte teilen Sie die Backtrace und Exception Nachricht des Absturzes. Der von Ihnen freigegebene Screenshot enthält keine relevanten Informationen. – bdash

Antwort

1

Ach, es könnte etwas mit der Art und Weise zu tun, sind Sie die Reich-Instanzen erstellen, versuchen Sie dies:

let realm = try! Realm() 

do { 
    try realm.write { 
     do { 
      try realm.add(theme, update: true) 
     } catch { 
      print("Error saving data") 
     } 
    } 
} catch { 
    print("Realm.write error") 
} 

Obwohl, in der Regel werden Sie nicht Ihre Transaktionen in einem Do-catch wickeln müssen Block:

let realm = try! Realm() 

try! realm.write { 
    realm.add(theme, update: true) 
} 
Verwandte Themen