ios - 不明确的类型名称错误

标签 ios swift swiftyuserdefaults

我正在尝试重新编译 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 文件,就可以开始了。

enter image description here

关于ios - 不明确的类型名称错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377468/

相关文章:

ios - 注册按钮点击功能

ios - 如何按给定大小的 block 从字符串拆分为数组

android - 在 flutter 中向图像添加自定义框架

ios - 在 Swift 4.2 中传递给多部分 API 的非拉丁(多语言)文件名

ios - TableView 导航到 View Controller 和其他单元格中的其他操作

ios - 在 swift 3 中子类化的 UITableViewCell 始终具有 320 点的 contentView

ios - 如何从主类访问自定义 Collection View 单元格类中的 TextView

swift - MKUserTrackingButton 什么都不做