ios - Realm 无法在 Xcode 9.2 上使用 SIGNAL SIGABRT

标签 ios swift realm

我将 Xcode 9.2 和 swift 4 用于 IOS 应用程序 一切都很好,但是当我添加 Realm [单击按钮后保存到数据库],然后单击按钮时,应用程序会崩溃并显示此消息

SIGNAL SIGABRT 

当我用一个简单的方法更改 Realm 方法时

print("clicked")

它有效

<小时/>

我使用这条 pod 线添加库

pod 'RealmSwift'

我有下面的代码

 floaty.addItem("Share", icon: UIImage(named: "share-variant")! , handler:{ item in
        self.shareTxt()
    })
    floaty.addItem("Save", icon: UIImage(named: "content-save")! , handler:{ item in
        self.saveToDB()
    })
<小时/>
func saveToDB() {
    let realm = try! Realm()
    realm.beginWrite()
    realm.create(News.self, value: [SingleItem?.id])
    try! realm.commitWrite()

}
<小时/>
class News: Object {
@objc dynamic var new_id = ""
}

最佳答案

首先,将属性 new_id 作为主键:

class News: Object {
    @objc dynamic var new_id = ""

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

然后,添加或更新模型:

func saveToDB() {
    if let newId = SingleItem?.id {
        let realm = try! Realm()
        let news = realm.objects(News.self).filter("new_id == \(newId)").first

        if news != nil {
           try! realm.write {
               //optional, updating some fields...
               //like: news.title = "some title"
           }
        }
        else{
           let news = News(value: ["new_id", newId])
           try! realm.write {
               realm.add(news)
           }
        }
    }
}

关于ios - Realm 无法在 Xcode 9.2 上使用 SIGNAL SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442240/

相关文章:

android - 如何删除 Realm 对象及其子关系?

multithreading - 强制挂起的函数在一个线程上工作以在后台映射 Realm 对象

ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件

objective-c - xCode 8.2.1 slow build objective-c with swift pod

android - 切换到插件 android gradle 3.3 时构建项目 io.realm.DefaultRealmModule 时出错

swift - 无法在 iOS14 中的 UIDatePicker 上设置 24 小时格式

swift uitableview 仅显示用户数组的不同值

ios - iOS 11 上的 XCode "Unable to parse contraint format"

iphone - iOS:通用应用程序不会旋转,从不调用 willRotateToInterfaceOrientation

ios - 如何在 SpriteKit 场景中控制 UITableView 的 Z-Order?