我试图重新编译SwiftyUserDefaults(https://github.com/radex/SwiftyUserDefaults)以添加Carthage支持,但在尝试编译时我看到以下错误:
不明确的类型名称'代理'在NSUserDefaults'
代码
public func ?= (proxy: NSUserDefaults.Proxy, @autoclosure expr: () -> Any) {
if !proxy.defaults.hasKey(proxy.key) {
proxy.defaults[proxy.key] = expr()
}
}
和
'代理'在此上下文中类型查找是不明确的
的
public subscript(key: String) -> Proxy {
return Proxy(self, key)
}
据我所知 - 问题在于代理类,它是嵌入在扩展中的。
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
}
// ..................................
}
}
我查找了文档,但没有任何引用可以在扩展中使用类。
是不是?
答案 0 :(得分:1)
您正在目标SwiftlyUserDefaultsTests中编译SwiftlyUserDefaults.swift
文件两次:一次在SwiftlyUserDefaults.framework
(这是SwiftlyUserDefaultsTests的依赖项),一次在“编译源”构建阶段。
只需从SwiftlyUserDefaultsTests目标的“编译源”构建阶段中删除SwiftlyUserDefaults.swift
文件,您就应该好了。