型は内部型を使用しているため、プロパティをパブリックとして宣言できません


100

2つのクラスContentとを作成しましたBucket。 オブジェクトBucketの配列を含み、Contentパブリックプロパティを介してそれを公開します。しかし、そうするとエラーが表示されます。

型は内部型を使用しているため、プロパティをパブリックとして宣言できません

ここに画像の説明を入力してください

これがエラーを引き起こしている理由について何か考えはありますか?


次のように、唯一の公共への基本的なクラスを公開する方法を見ていいだろうpublic(Array<NSObject>) let contents: Array<Content>
ベンLeggiero

回答:


173

Contentクラスのアクセスレベルもpublic と宣言する必要があります。

public class Content {
   // some code
}

ドキュメントに記載されているように

パブリック変数は、パブリック変数が使用されるすべての場所で使用できるとは限らないため、内部またはプライベートタイプを持つものとして定義することはできません。

クラスはinternalデフォルトで宣言されpublicているため、公開するにはキーワードを追加する必要があります。

同様のルールが関数にも存在します。

関数は、構成要素の型が周囲のコードで利用できない状況で使用される可能性があるため、パラメーター型および戻り型よりも高いアクセスレベルを持つことはできません。


3
すばらしい答えです。また、Xcode(9.2)を再起動するまでエラーが発生しないこともわかりました。
Jasongiss

9

Content パブリックとしても宣言する必要があります:

public class Content {}

ユースケースによっては、Bucket内部として宣言することもできます。publicこの場合はキーワードを省略してください。


1

私の問題は名前空間の問題でした。

呼び出された列挙型を宣言しましたがData、それはSwift Dataクラス、特にimageData: DataCore Dataモデル内のプロパティに関係していました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.