2016-06-25 359 views
0

我試圖用Realm保存一個簡單對象,但應用程序在嘗試寫入事務時仍然崩潰,即使它被封裝在Do Catch塊中。嘗試使用Realm時,應用程序崩潰SIGABRT

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

編輯:上面的代碼導致崩潰是唯一單擊按鈕時執行。沒有控制檯輸出。我通過CocoaPods帶來了領域。

+0

這個截圖並沒有真正的幫助。你能分享在控制檯中出現的崩潰日誌嗎?並且崩潰是在啓動時發生還是僅在運行代碼塊時發生? – xoudini

+0

只有當運行該代碼塊,並沒有在控制檯 –

+1

請共享崩潰的回溯和異常消息。您共享的屏幕截圖不包含相關信息。 – bdash

回答

1

啊,這可能是與你所創建的領域實例的方式,試試這個:

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) 
} 
相關問題