Swift 领域创建有时会崩溃
为了创建我的领域实例,我创建了一个名为领域提供者的类。不幸的是,它有时会在队列中崩溃Swift 领域创建有时会崩溃,swift,realm,Swift,Realm,为了创建我的领域实例,我创建了一个名为领域提供者的类。不幸的是,它有时会在队列中崩溃 return realm! 你能看到什么是错误的,为什么会这样吗 class RealmProvider { private var realm: Realm? private let currentSchemaVersion: UInt64 = 6 func loadRealm() -> Realm { if let realm = self.realm
return realm!
你能看到什么是错误的,为什么会这样吗
class RealmProvider {
private var realm: Realm?
private let currentSchemaVersion: UInt64 = 6
func loadRealm() -> Realm {
if let realm = self.realm {
return realm
}
migrateRealm()
if let _ = NSClassFromString("XCTest"){
realm = try! Realm(configuration: Realm.Configuration(fileURL: nil, inMemoryIdentifier: "test", syncConfiguration: nil, encryptionKey: nil, readOnly: false, schemaVersion: currentSchemaVersion, migrationBlock: nil, deleteRealmIfMigrationNeeded: true, objectTypes: nil))
} else {
realm = try! Realm()
}
return realm!
}
private func migrateRealm() {
Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: currentSchemaVersion, migrationBlock: { _, oldSchemaVersion in
if (oldSchemaVersion < self.currentSchemaVersion) {
self.purgeRealm()
}
})
}
private func purgeRealm() {
logger.warning("deleting realm data...")
do {
if let realmUrl = Realm.Configuration.defaultConfiguration.fileURL {
try FileManager.default.removeItem(at: realmUrl)
}
} catch {
logger.error("failed deleting realm data")
}
}
}
类重新提供程序{
私有领域:领域?
私有let currentschemaversation:UInt64=6
func loadRealm()->Realm{
如果让realm=self.realm{
返回域
}
migrateRealm()
如果let=NSClassFromString(“xTest”){
realm=try!realm(配置:realm.configuration(fileURL:nil,inMemoryIdentifier:test,syncConfiguration:nil,encryptionKey:nil,readOnly:false,schemaVersion:currentSchemaVersion,migrationBlock:nil,DeleteRealMifMigrationRequired:true,objectTypes:nil))
}否则{
realm=try!realm()
}
返回王国!
}
私有函数migrateRealm(){
Realm.Configuration.defaultConfiguration=Realm.Configuration(
schemaVersion:currentSchemaVersion,migrationBlock:{},中的oldSchemaVersion
if(oldSchemaVersion
由于某种原因,似乎没有创建领域,请尝试在使用do catch
创建领域时处理错误,以获取准确的错误消息。由于这种情况只是偶尔发生,您有没有建议如何向我发送此错误消息?我使用的是buddybuild,这里的堆栈跟踪是0 libswiftCore.动态库(TFs16)断言失败FTVS12静态字符串(SU5标记)单元32 OS5从不1 libswiftCore.dylib swift\u意外错误\u合并2 libswiftCore.dylib swift_errorInMainTry使用do{..}catch let error{…}
并输出错误。“catch”块不可访问,因为“do”块中没有抛出错误。日志中是否有其他错误消息Realm()
在无法创建时抛出错误。你能重现这个问题吗?