【问题标题】:Android Realm Schema mismatch errorAndroid领域架构不匹配错误
【发布时间】:2018-03-04 06:42:40
【问题描述】:

你们如何将 Java 领域对象与 Swift 领域对象匹配?

我的领域开发是从 Swift 开始的,因此对象服务器包含从 swift 迁移的数据。然后我使用 Java(使用 Realm Studio 的模型)创建了我的 android 版本。

Swift:
class OrderItem: Object {
    @objc dynamic var id: String = ""
}

Java
public class OrderItem extends RealmObject {
//    @PrimaryKey
    private String id;
}

Error without @PrimaryKey:
Bad changeset received: Schema mismatch: 'OrderItem' has a primary key on one side, but not on the other.

Error with @PrimaryKey: 
Exception has been thrown: The following changes cannot be made in additive-only schema mode: Primary Key for class 'OrderItem' has been added.

任何想法如何解决这些错误?

【问题讨论】:

  • 您是否尝试过添加@PrimaryKey,然后在您正在使用的Android 模拟器上运行clear data
  • @EpicPandaForce 清除/擦除数据有效!谢谢!对于我们 Realm 新手的附加信息,(@Primary @Required)在将新的 RealmObjects 输入项目时会导致架构错误。清除模拟器上的数据可以修复所有问题。

标签: android realm realm-migration realm-object-server


【解决方案1】:

没有@PrimaryKey 的错误: 收到错误的变更集:架构不匹配:“OrderItem”在一侧有主键,但在另一侧没有。

这表明架构不匹配会执行破坏性架构操作,所以这是不对的。

@PrimaryKey 错误: 已引发异常:无法在仅添加模式模式下进行以下更改:已添加类“OrderItem”的主键。

这意味着您可能事先尝试不使用@PrimaryKey,因此您在本地仍然有一个没有主键的架构,因此您需要擦除应用程序的数据以删除Realm文件,然后再尝试使用@987654322 @。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多