不明确的类型名称错误
Ambiguous type name error
我正在尝试重新编译 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)
}
据我了解 - 问题出在 class 代理,它嵌入在扩展中。
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
}
// ..................................
}
}
我已经查找过文档,但没有任何参考资料表明 class 可以用于扩展。
对吗?
您正在目标 SwiftlyUserDefaultsTests 中编译 SwiftlyUserDefaults.swift
文件两次:一次在 SwiftlyUserDefaults.framework
(它是 SwiftlyUserDefaultsTests 的依赖),一次在 "Compile Source" 构建阶段。
只需从 SwiftlyUserDefaultsTests 目标的 "Compile Source" 构建阶段删除 SwiftlyUserDefaults.swift
文件,就可以开始了。
我正在尝试重新编译 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)
}
据我了解 - 问题出在 class 代理,它嵌入在扩展中。
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
}
// ..................................
}
}
我已经查找过文档,但没有任何参考资料表明 class 可以用于扩展。
对吗?
您正在目标 SwiftlyUserDefaultsTests 中编译 SwiftlyUserDefaults.swift
文件两次:一次在 SwiftlyUserDefaults.framework
(它是 SwiftlyUserDefaultsTests 的依赖),一次在 "Compile Source" 构建阶段。
只需从 SwiftlyUserDefaultsTests 目标的 "Compile Source" 构建阶段删除 SwiftlyUserDefaults.swift
文件,就可以开始了。