属性 'public' 只能在非本地范围内使用

Attribute 'public' can only be used in a non-local scope

这里出现了一个非常技术性的错误,Google 没有发现任何问题。

我正在将 Cordova 添加到 Swift 项目中。

我添加了一个桥接头文件和 Cordova 构建依赖项,我确实获得了自动完成功能(Cordva CDV 类 是自动完成的)。

一切正常,直到我突然收到此错误:

Attribute 'public' can only be used in a non-local scope

我的项目到处都是错误。我的许多功能也停止工作。

任何有关发生的事情或我可以做些什么来解决的任何建议都将不胜感激

当您对嵌套在函数或方法中的类型声明 public 时,会出现该错误 - 在该上下文中声明的类型仅具有局部作用域,因此不能标记为 public。示例:

func foo() {
    public struct Bar {        
    }
}
// Attribute 'public' can only be used in a non-local scope

对于未来的读者:

我同意 Nate Cook 对问题的分析,但是我的编译器抛出了这个错误,因为我在文件的较高位置缺少花括号 (})。例如,switch 中 default 语句后的花括号丢失了。在这种情况下,它会在 public var URLRequest: NSURLRequest 行抛出错误:

public enum MyEnum: SomeProtocol {
    var someVariable {
        switch self {
        case .first:
            return something
        default:
            return default
        }
    // <------- needs brace here
    public var URLRequest: NSURLRequest {
        // Code here.
    }
}