繁体   English   中英

领域Objective-C将架构从float更改为double

[英]Realm objective-c change schema from float to double

我想将一个属性从float更新为double但是根本没有关于此类迁移的特定文档。

仅通过更改类中的属性类型是否容易? 变更有困难吗? (如何?)还是根本没有?

尽管在可以擦除该数据列甚至清除该类的所有行的情况下,我的要求并不严格。

谢谢。

这很容易。

假设您的第一个架构版本如下所示:

// Models
class MyModel: Object {
  dynamic var prop: Float = 0
}

// Usage
let configuration = Realm.Configuration(schemaVersion: 0)
let realm = try! Realm(configuration: configuration)

然后,将属性从float更改为double,更改模式版本,然后将旧对象的float转换为新对象的double:

// Models
class MyModel: Object {
  dynamic var prop: Double = 0
}

// Usage
let configuration = Realm.Configuration(schemaVersion: 1, migrationBlock: { migration, _ in
  migration.enumerate(MyModel.className()) { oldObject, newObject in
    newObject!["prop"] = Double(oldObject!["prop"] as! Float)
  }
})
let realm = try! Realm(configuration: configuration)

所有这些都记录在Realm的Migrations文档中

将属性类型从float更改为double并运行

RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];

    config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {

        if(oldSchemaVersion < 26) {
            [migration enumerateObjects:TransformationParameters.className block:^(RLMObject * _Nullable oldObject, RLMObject * _Nullable newObject) {
                newObject[@"translationX"] = @([oldObject[@"translationX"] doubleValue]);

            }];
        }
    };

这通过调用doubleValue执行从float到double的转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM