我有两个使用相同的do-catch语句的函数:
class func funcA(object:Object) -> Class1 {
do {
let keychain = Keychain(service: GlobalConstants.defaultKeychainService)
let config = Realm.Configuration(encryptionKey: keychain[data: GlobalConstants.dbEncryptionKey])
let realm = try Realm(configuration: config)
// More stuff that funcA stuff
try! realm.write {
realm.add(object)
}
} catch let error as NSError {
fatalError("Error opening realm: \(error)")
}
}
class func funcB(object:Object) -> Class2 {
do {
let keychain = Keychain(service: GlobalConstants.defaultKeychainService)
let config = Realm.Configuration(encryptionKey: keychain[data: GlobalConstants.dbEncryptionKey])
let realm = try Realm(configuration: config)
// More stuff that funcB stuff
return realm.objects(Dictation.self)
} catch let error as NSError {
fatalError("Error opening realm: \(error)")
}
}
在上面看,funcA和funcB使用相同的do-catch语句,但是他们在do闭包中做了一些额外的事情,而另一个并没有。他们也会回归不同的东西。
如何重构它们以便他们可以使用do-> catch语句调用第三个函数,这样我的代码就会干掉?