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

时间:2015-08-03 16:51:40

标签: swift

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

  

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

enter image description here

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

3 个答案:

答案 0 :(得分:133)

您还必须公开Content类的访问级别。

public class Content {
   // some code
}

documentation中所述:

  

公共变量不能定义为具有内部或私有   类型,因为类型可能无处可用   使用公共变量。

默认情况下,类被声明为internal,因此您必须添加public关键字才能将其公开。

功能也存在类似的规则。

  

函数的访问级别不能高于其参数类型   和返回类型,因为该函数可以在情况下使用   其组成类型不适用于周围的代码。

答案 1 :(得分:9)

Content也必须声明为公开:

public class Content {
  …
}

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

答案 2 :(得分:1)

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

我已经声明了一个名为Data的枚举,并且与Swift Data类(尤其是Core Data模型中的imageData: Data属性)混为一谈。