属性不能声明为public,因为其类型使用内部类型

Ste*_*eve 89 swift

我创建了两个类ContentBucket. Bucket包含一组Content对象,并通过公共属性公开.但是,当我这样做时,我收到错误:

属性不能声明为public,因为其类型使用内部类型

在此输入图像描述

有关为什么会引发错误的任何想法?

Cih*_*Tek 151

您还必须声明Content类的公共访问级别.

public class Content {
   // some code
}
Run Code Online (Sandbox Code Playgroud)

文档中所述:

公共变量不能定义为具有内部或私有类型,因为在使用公共变量的任何地方都可能无法使用该类型.

internal默认情况下,类声明为,因此您必须添加public关键字以使其公开.

功能也存在类似的规则.

函数不能具有比其参数类型和返回类型更高的访问级别,因为该函数可用于其组成类型不可用于周围代码的情况.

  • 很好的答案.我还发现,在Xcode(9.2)重新启动之前,错误不会消失. (3认同)
  • 它已公开,但仍然对我不起作用:( (2认同)

Kor*_*tor 9

Content 必须宣布为公开的:

public class Content {
  …
}
Run Code Online (Sandbox Code Playgroud)

根据您的用例,您也可以声明Bucket为内部用户.public在这种情况下,只需省略关键字即可.


pka*_*amb 5

我的问题是命名空间问题。

我声明了一个名为的枚举Data,这对 SwiftData类来说是一种干扰,尤其imageData: Data是核心数据模型中的一个属性。