Realm和Swift的“线程1:信号SIGABRT”

时间:2016-04-04 09:58:52

标签: ios swift realm

上周五,它奏效了。今天,它不再起作用了。

我有一位同事正在为此工作。

我重新安装了我的吊舱,清理了项目,尝试了不同的目标。我没有错误消息。

这是错误的代码: Faulty code

这让我感到困惑。知道我应该寻找什么吗?

1 个答案:

答案 0 :(得分:0)

注意:我不与Realm合作,所以我可以在这里偏离主题......不要犹豫告诉我。

我们发现Realm()会引发错误,但由于您使用的是try!而不是使用Do-Catch和错误处理,因此您只会遇到崩溃而不是错误消息。

因为你在评论中提出“但我怎么能用do / catch语句声明app wise变量,因为它不允许在顶级?”,我只是将该属性设置为Optional并填充其视图/窗口/ init加载时的内容。

在班级的根源:

let realm: Realm?

viewDidLoadinit或启动时调用的任何其他适合您需求的方法:

do {
    self.realm = try Realm()
} catch let error as NSError {
    print(error.debugDescription)
    // handle errors here
}

然后在您的应用中,在使用前安全解开:

if let realm = self.realm {
    // do your work with `realm`
}

甚至更好,遵循“快乐的道路”并使用警卫:

guard let realm = self.realm else { return }
// do your work with `realm`

如果您不想处理在任何地方展开Optional属性,可以将其声明为隐式解包的可选

let realm: Realm!

但是在初始化部分中,在尝试访问该值之前,不要忘记在应用程序执行时如果它为零。

do {
    self.realm = try Realm()
} catch let error as NSError {
    print(error.debugDescription)
    fatalError("Can't continue further, no Realm available")
}