我正在尝试重新编译 SwiftyUserDefaults( https://github.com/radex/SwiftyUserDefaults ) 以添加 Carthage 支持,但在尝试编译时我看到以下错误:
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
}
// ..................................
}
}
我已经查找过文档,但没有任何引用资料表明可以在扩展中使用某个类。
是吗?
最佳答案
您在目标 SwiftlyUserDefaultsTests 中两次编译 SwiftlyUserDefaults.swift
文件:一次在 SwiftlyUserDefaults.framework
(它是 SwiftlyUserDefaultsTests 的依赖项)中,一次在“编译源代码”构建阶段。
只需从 SwiftlyUserDefaultsTests 目标的“编译源代码”构建阶段删除 SwiftlyUserDefaults.swift
文件,就可以开始了。
关于ios - 不明确的类型名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377468/