2016-06-25 3 views
0

Я пытаюсь сохранить простой объект в Realm, но приложение продолжает сбой при попытке сделать транзакцию записи, даже когда она завернута в блок Do Catch.Приложение Crashes SIGABRT при попытке использовать Realm

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") 
    } 

Вот объект 'Тема'

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" 
} 

}

Вот скриншот аварии SIGABRT Crash

EDIT: Вышеприведенный код, который вызывает сбой только выполняется при нажатии кнопки. Также нет консольного выхода. Я ввожу сферу через CocoaPods.

+0

Снимок экрана на самом деле не помогает. Не могли бы вы поделиться журналом сбоев, который появляется в консоли? И происходит ли сбой при запуске или только при запуске кода в блоке? – xoudini

+0

только при запуске этого блока кода и ничего в консоли –

+1

Просьба поделиться обратным следом и сообщением об исключении аварии. Скриншот, который вы поделили, не содержит соответствующей информации. – bdash

ответ

1

Ах, это могло бы иметь что-то делать с тем, как вы создаете экземпляры Realm, попробуйте следующее:

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") 
} 

Хотя, как правило, вам не нужно обернуть ваши транзакции в сделай уловом блок:

let realm = try! Realm() 

try! realm.write { 
    realm.add(theme, update: true) 
} 
Смежные вопросы