1つのアプリケーションに2つのレルムファイルがあります。毎回スキーマバージョンを変更せずに、Xcodeで領域を自動的に更新します。複数のレルムファイルを1つのアプリケーションで移行する方法
class News: Object {
@objc dynamic var name: String
}
class NewsManager {
static var realm = try! Realm()
static var cacheRealm: Realm = {
let documentDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask,
appropriateFor: nil, create: false)
let url = documentDirectory.appendingPathComponent("cache.realm")
var config = Realm.Configuration()
config.fileURL = url
return try! Realm(configuration: config)
}()
}
私は、このような@objcダイナミックVARタイトルとしてニュースに新しいプロパティを追加します。のUIApplication、didFinishLaunchingWithOptionsのlaunchOptions:文字列、 私はAppDelegate FUNCアプリケーション(_アプリケーションに次のコードを追加します[ UIApplicationLaunchOptionsKey:任意] = nilの) - >ブール
let config = Realm.Configuration(schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in
})
Realm.Configuration.defaultConfiguration = config
復帰しようとのクラッシュにメッセージ?!レルム(コンフィグレーション:config) in NewsManager
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=10 "Migration is required due to the following errors:
- Property 'News.test' has been added." UserInfo={Error Code=10, NSLocalizedDescription=Migration is required due to the following errors:
- Property 'News.test' has been added.}: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-900.0.69.2/src/swift/stdlib/public/core/ErrorType.swift, line 181
どうすればよいですか?
レルム:3.0.1
スウィフト:4.0
のiOS:10
私は** @ objc動的var title:String?**と** @ objc動的var title:String = "" **を追加します。 on ** cache.realm **。だから私は新しいプロパティを追加した後にXcodeで実行するときにschemaVersionを増やす必要がありますか? –
新しい非オプションプロパティの追加など、移行ブロックを必要とする変更を行う場合は、「schemaVersion」を増やす必要があります。 – AustinZ