模糊类型名称错误

时间:2015-05-21 14:59:42

标签: ios swift swiftyuserdefaults

我试图重新编译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
        }

        // ..................................       

    }
}

我查找了文档,但没有任何引用可以在扩展中使用类。

是不是?

1 个答案:

答案 0 :(得分:1)

您正在目标SwiftlyUserDefaultsTests中编译SwiftlyUserDefaults.swift文件两次:一次在SwiftlyUserDefaults.framework(这是SwiftlyUserDefaultsTests的依赖项),一次在“编译源”构建阶段。

只需从SwiftlyUserDefaultsTests目标的“编译源”构建阶段中删除SwiftlyUserDefaults.swift文件,您就应该好了。

enter image description here