Swift:如何重构do->捕获语句并保持DRY

时间:2016-09-14 23:30:25

标签: swift

我有两个使用相同的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语句调用第三个函数,这样我的代码就会干掉?

0 个答案:

没有答案