Я хочу добавить другое свойство в свою схему базы данных Realm (указано стрелкой), в то же время изучая, как использовать функции миграции.Как добавить поле в схему базы данных 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 и я скопировал код в первом блоке и поместил его в моем «приложениях (приложения: didFinishLaunchingWithOptions :)» функция, которая расположена в «AppDelegate.swift " файл.
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. "
(Это утверждение ничего другого нуждающегося сделать, кажется, подтверждается комментариями внутри, если заявление, выше.)
Тем не менее, когда я запускаю мое приложение я получаю сообщение об ошибке:
fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=0 "Migration is required for object type 'FeesPaid' due to the following errors: - Property 'balance' has been added to latest object model." UserInfo={NSLocalizedDescription=Migration is required for object type 'FeesPaid' due to the following errors: - Property 'balance' has been added to latest object model.}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.1.101.15/src/swift/stdlib/public/core/ErrorType.swift, line 50
Так что я делаю неправильно?
Мне не нужно перечислять или заполнять любые значения в новом поле. Мне просто нужно новое поле в моей схеме.
Вы пытались установить схему на 2? Я предполагаю, что вы запустили приложение после установки schemaVersion в 1, но перед добавлением свойства в модель. Всякий раз, когда я получал эту ошибку раньше, я просто сталкиваюсь с schemaVersion и вычисляет миграцию. – esthepiking
Я действительно. Я даже попытался сделать версию до 3, 4 и 5 без успеха. Есть ли что-то еще, что я должен делать? –
Нет, это должно быть все. Если вы просто тестируете локально, вы можете удалить приложение и переустановить, что позаботится о проблеме миграции, но это не является хорошим решением для производственного приложения. – esthepiking