Android 领域:主键约束已损坏。值已存在:0

Android Realm: Primary key constraint broken. Value already exists: 0

我现在经常使用 Realm。我很喜欢!但真正烦人的一件事是,在使用 copyToRealmOrUpdate 时,我无法将主键设置为零。我从服务器取回我的 ID。第一个 ID 为零。所以我的应用程序立即崩溃并显示:Primary key constraint broken. Value already exists: 0。如果这是一个不同的数字,它就可以正常工作,但它会在零时崩溃。这是一个错误还是有人可以帮助我?

谢谢!

这里是 Realm 的基督徒。 0 有点问题,因为它也是整数的默认值。这意味着如果您确实将 0 作为实际值,您将 运行 陷入使用 API 之类的 Realm.createObject() 的问题。也就是说,我们刚刚使用 Realm.copyToRealmOrUpdate() 修复了一个错误,它涵盖了您的确切用例:https://github.com/realm/realm-java/pull/995

它已经合并到 master 中,因此应该是我们的 -SNAPSHOT 版本的一部分,但尚未正确发布。您可以尝试使用:

 repositories {
        jcenter()
        maven {
            url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
        }
    }

    compile 'io.realm:realm-android:0.80.1-SNAPSHOT'