我正在寻求将另一个属性添加到我的 Realm 数据库方案(由箭头指向),同时学习如何使用迁移功能。
class FeesPaid: Object {
dynamic var fileNumber = ""
dynamic var forMonth = ""
dynamic var amount: Float = 0.0
dynamic var balance: Float = 0.0 <-------
dynamic var date = ""
}
我一直按照Realm.io的说明进行操作,我已经复制了第一个块中的代码并将其放入位于“AppDelegate.swift”文件中的“应用程序(应用程序:didFinishLaunchingWithOptions:)”函数中。
let config = Realm.Configuration(
// Set the new schema version. This must be greater than the previously used
// version (if you've never set a schema version before, the version is 0).
schemaVersion: 1,
// Set the block which will be called automatically when opening a Realm with
// a schema version lower than the one set above
migrationBlock: { migration, oldSchemaVersion in
// We haven’t migrated anything yet, so oldSchemaVersion == 0
if (oldSchemaVersion < 1) {
// Nothing to do!
// Realm will automatically detect new properties and removed properties
// And will update the schema on disk automatically
}
}
)
// Tell Realm to use this new configuration object for the default Realm
Realm.Configuration.defaultConfiguration = config
// Now that we've told Realm how to handle the schema change, opening the file
// will automatically perform the migration
let clients = try! Realm()
Realm 网站上此块下方的声明指出:
“至少我们需要做的就是用一个空块更新版本,以表明该模式已被 Realm(自动)升级。”
(上面 if 语句中的注释似乎支持这种不需要做任何其他事情的声明。)
然而,当我运行我的应用程序时,我不断收到错误消息:
致命错误:“试试!” 表达式意外引发错误:Error Domain=io.realm Code=0“由于以下错误,对象类型 'FeesPaid' 需要迁移: - 属性 'balance' 已添加到最新的对象模型。" UserInfo={NSLocalizedDescription=由于以下错误,对象类型 'FeesPaid' 需要迁移: - 属性 'balance' 已添加到最新的对象模型中。}:文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.1.101.15/src/swift/stdlib/public/core/ErrorType.swift ,第 50 行
那么我做错了什么?
我不需要枚举或预填充新字段中的任何值。我只需要我的方案中的新字段。