Swift 包中的文件超出范围

Files in Swift Package out of scope

我创建了一个基本项目,其中包含与该项目相关的 swift 包(我们称它为“Foo”)。

我尝试从 Foo().textAppDelegate 打印“hello world” 我得到一个错误:

"Cannot call value of non-function type 'module<Foo>' "

然后我尝试向这个包添加一个新的结构或 class,但我收到一个错误:"Cannot find {ObjectName} in scope" Foo 内部的测试全部通过。 看来我错过了一些步骤。

您可能忘记将 Swift 包导入 AppDelegate。 尝试将您的包裹的等价物放在 AppDelegate.

的顶部
import Foo

根据此 Github Issue,(如果您使用的是 CocoaPods,但您没有在问题中说明。) 您必须在您的包裹中制作 class/struct public。

您可能还需要这样尝试:

Foo.bar()

Foo 是您的包名,bar 是其中的 class 或结构。

不要将模块与 public class(或结构)混淆。这听起来像是你在这里做的:

I create a basic project with a swift package (let's call it "Foo") related to this project and try print "hello world" from Foo().text

Foo() 意味着有一个 public class/struct 叫做 Foo。在那儿?我不这么认为。您可能有一个名为 Foo 的,您import。但这并不意味着 Foo 包有一个 public class (或结构) 称为 Foo.

例如,您可能会在包裹中看到这个:

struct Foo {
    var text = "Hello, World!"
}

但这并不意味着你可以简单地import Foo然后谈论Foo().text,因为这个Foo不是public。