миграция областей, не может добавить свойство - PullRequest
0 голосов
/ 11 октября 2018

область тестирования, не могу добавить новое свойство в мой класс тестирования.Последующая документация и некоторые ответы здесь, но оба не работают.В моем коде даже "простой" пустой блок по умолчанию для миграции не работает, используя обновленную область.

получение этой ошибки

Поток 1: фатальная ошибка: 'try!'В выражении неожиданно возникла ошибка: Ошибка Domain = io.realm Code = 10 "Миграция требуется из-за следующих ошибок: - Добавлено свойство 'ComicType.creationDate'."UserInfo = {NSLocalizedDescription = Миграция требуется из-за следующих ошибок: - Добавлено свойство 'ComicType.creationDate'., Код ошибки = 10}

похоже, я не изменяю schemaVersion,но я сделал в «базовом» блоке миграции.Я проверяю версию схемы в делегате приложения с помощью:

 let configCheck = Realm.Configuration();
        do {
            let fileUrlIs = try schemaVersionAtURL(configCheck.fileURL!)
            print("schema version \(fileUrlIs)")
        } catch  {
            print(error)
        }

мой AppDelegate:

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.


        let config = Realm.Configuration(schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in

                if (oldSchemaVersion < 1) {
                }

        })

        Realm.Configuration.defaultConfiguration = config

        _ = try! Realm()



        return true
    }

мой класс:

import Foundation
import RealmSwift

class ComicType: Object {
    @objc dynamic var name : String = ""
    @objc dynamic var creationDate : Date? //the new property

}

1 Ответ

0 голосов
/ 12 октября 2018

Проблема решена следующим образом: реальная проблема не в номере схемы, а в том, что вообще не нужно вызывать код миграции, я понял, что схема миграции всегда остается неизменной.Истинная ошибка вызывает let realm = try! Realm() в моем контроллере представления, использующем его как глобальную константу.Теперь с помощью lazy var realm = try! Realm() найдена большая помощь здесь .Теперь после каждого изменения в моей модели я обновляю в appDelegate schemaVersion.

...