5

我正在尝试重新编译 SwiftyUserDefaults(https://github.com/radex/SwiftyUserDefaults)以添加 Carthage 支持,但在尝试编译时我看到以下错误:

'NSUserDefaults' 中不明确的类型名称 'Proxy'

对于以下代码

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
        }

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

    }
}

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

这样对吗?

4

1 回答 1

3

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

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

在此处输入图像描述

于 2015-05-21T16:07:16.343 回答