我試圖重新編譯SwiftyUserDefaults(https://github.com/radex/SwiftyUserDefaults)添加迦太基的支持,但在試圖編譯我看到以下錯誤:不明確的類型名稱錯誤
Ambiguous type name 'Proxy' in 'NSUserDefaults'
爲下面的代碼
public func ?= (proxy: NSUserDefaults.Proxy, @autoclosure expr:() -> Any) {
if !proxy.defaults.hasKey(proxy.key) {
proxy.defaults[proxy.key] = expr()
}
}
和
'Proxy' is ambiguous for type lookup in this context
爲
public subscript(key: String) -> Proxy {
return Proxy(self, key)
}
據我所知 - 問題在於類Proxy,它被嵌入到擴展中。
public extension NSUserDefaults {
class Proxy {
private let defaults: NSUserDefaults
private let key: String
private init(_ defaults: NSUserDefaults, _ key: String) {
self.defaults = defaults
self.key = key
}
// MARK: Getters
public var object: NSObject? {
return defaults.objectForKey(key) as? NSObject
}
// ..................................
}
}
我查找過文檔,但沒有任何引用可以在擴展中使用類。
是不是?在「編譯源」曾經在SwiftlyUserDefaults.framework
(這是SwiftlyUserDefaultsTests的依賴),而一旦構築階段:
項目在我的機器上克隆後編譯得很好。你使用的是哪個版本的Xcode? –
版本6.3.2(6D2105) –
此時使用6.3.1(6D1002)。也許在新版本中發生了一些變化,並且SwiftyUserDefaults還沒有更新。 –