2016-06-25 136 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) 
} 
相关问题