覆盖swift协议扩展

时间:2017-12-22 08:39:39

标签: swift dispatch

我有一个默认实现的协议

public protocol SettingsIdentifier {
    var key: String { get }
    var prefix: String { get }
    var defaults: DefaultsProtocol { get }
}

和默认实现

public extension SettingsIdentifier where Self: RawRepresentable, Self.RawValue == String {
    var key: String { return prefix + rawValue }
    var prefix: String { return "" }
    var defaults: DefaultsProtocol { return UserDefaults.standard as DefaultsProtocol }
}

目标是在Unittesting中覆盖var默认值并在此处提供模拟。所以对于SomeDefaults来说

enum SomeDefaults: String, SettingsIdentifier {
   case preconditionFulfilled
   var prefix: String { return "Prefix." }
}

我想提供像

这样的扩展程序
extension SomeDefaults {
   var defaults: DefaultsProtocol { return UserDefaultsMock }
}

但是当我在与枚举相同的文件中定义覆盖时,才会调用覆盖。

这是否与快速派遣行为有关?

0 个答案:

没有答案