代码之家  ›  专栏  ›  技术社区  ›  Kourosh

领域迁移错误“已添加属性“x”

  •  0
  • Kourosh  · 技术社区  · 6 年前

    我不能使用迁移领域

    在我的项目中,您需要配置领域的迁移。我创建了一个迁移类,添加了迁移,并将字段添加到realmobject,但不工作迁移

    我收到此错误消息:

    由于以下错误,需要迁移:

    • 已添加属性“Pickupstate.Latitude”。
    • 已添加属性“pickupstate.longitude”。

    旧realmobject模型

    public class PickupState extends RealmObject {
      @PrimaryKey
      private long autoIncrementId;
      private long id;
      private String userName;
      private String eventType;
      private String eventData;
      private String syncStatus;
      private String syncErrorCode;
    
      public void setAutoIncrementId(long l) {
        autoIncrementId = l;
      }
    
      public long getAutoIncrementId() {
        return autoIncrementId;
      }
    
      public long getId() {
        return id;
      }
    
      public void setId(long id) {
        this.id = id;
      }
    
      public String getUserName() {
        return userName;
      }
    
      public void setUserName(String userName) {
        this.userName = userName;
      }
    
      public String getEventType() {
        return eventType;
      }
    
      public void setEventType(State eventType) {
        this.eventType = eventType.name();
      }
    
      public String getEventData() {
        return eventData;
      }
    
      public void setEventData(String eventData) {
        this.eventData = eventData;
      }
    
      public String getSyncStatus() {
        return syncStatus;
      }
    
      public void setSyncStatus(String syncStatus) {
        this.syncStatus = syncStatus;
      }
    
      public String getSyncErrorCode() {
        return syncErrorCode;
      }
    
      public void setSyncErrorCode(String syncErrorCode) {
        this.syncErrorCode = syncErrorCode;
      }
    }
    

    新RealMobject

    public class PickupState extends RealmObject {
      @PrimaryKey
      private long autoIncrementId;
      private long id;
      private String userName;
      private String eventType;
      private String eventData;
      private String syncStatus;
      private String syncErrorCode;
      private double latitude;
      private double longitude;
    
      public void setAutoIncrementId(long l) {
        autoIncrementId = l;
      }
    
      public long getAutoIncrementId() {
        return autoIncrementId;
      }
    
      public long getId() {
        return id;
      }
    
      public void setId(long id) {
        this.id = id;
      }
    
      public String getUserName() {
        return userName;
      }
    
      public void setUserName(String userName) {
        this.userName = userName;
      }
    
      public String getEventType() {
        return eventType;
      }
    
      public void setEventType(State eventType) {
        this.eventType = eventType.name();
      }
    
      public String getEventData() {
        return eventData;
      }
    
      public void setEventData(String eventData) {
        this.eventData = eventData;
      }
    
      public String getSyncStatus() {
        return syncStatus;
      }
    
      public void setSyncStatus(String syncStatus) {
        this.syncStatus = syncStatus;
      }
    
      public String getSyncErrorCode() {
        return syncErrorCode;
      }
    
      public void setSyncErrorCode(String syncErrorCode) {
        this.syncErrorCode = syncErrorCode;
      }
    
      public double getLatitude() {
        return latitude;
      }
    
      public void setLatitude(double latitude) {
       this.latitude = latitude;
        }
    
       public double getLongitude() {
        return longitude;
      }
    
       public void setLongitude(double longitude) {
       this.longitude = longitude;
      }
    }
    

    迁移类:

    public class PickupStateMigration implements RealmMigration {
    
      @Override
      public void migrate(@NonNull DynamicRealm realm, long oldVersion, long newVersion) {
        final RealmObjectSchema schema = realm.getSchema().get("PickupState");
        assert schema != null;
        if (oldVersion == 0) {
            schema.addField("latitude", double.class);
            schema.addField("longitude", double.class);
          oldVersion++;
        }
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   EpicPandaForce Jigar Joshi    6 年前

    RealmConfiguration config = new RealmConfiguration.Builder()
                                        .schemaVersion(1)
                                        .migration(new PickupStateMigration())
                                        // ...
                                        .build()
    
        2
  •  0
  •   Kourosh    6 年前

    推荐文章