Подтвердить что ты не робот

Свойство не может быть объявлено общедоступным, поскольку его тип использует внутренний тип

Я создал два класса Content и Bucket. Bucket содержит массив объектов Content и предоставляет это через общедоступное свойство. Однако, когда я это делаю, я получаю сообщение об ошибке:

Свойство не может быть объявлено общедоступным, поскольку его тип использует внутренний тип

введите описание изображения здесь

Любые мысли о том, почему это вызывает ошибку?

4b9b3361

Ответ 1

Вы также должны объявить уровень доступа класса public Content.

public class Content {
   // some code
}

Как указано в documentation:

Открытая переменная не может быть определена как внутренняя или закрытая типа, потому что тип может быть недоступен повсюду, используется общедоступная переменная.

Классы объявляются как internal по умолчанию, поэтому вам нужно добавить ключевое слово public, чтобы сделать их общедоступными.

Аналогичное правило существует и для функций.

Функция не может иметь более высокий уровень доступа, чем ее типы параметров и тип возврата, поскольку эта функция может использоваться в ситуациях где его составные типы недоступны для окружающего кода.

Ответ 2

Content должен быть объявлен как общедоступный:

public class Content {
  …
}

В зависимости от вашего прецедента вы можете объявить Bucket внутренним. Просто опустите ключевое слово public в этом случае.

Ответ 3

Моя проблема была проблемой пространства имен.

Я объявил перечисление под названием Data и это было смешно с классом Swift Data, особенно со свойством imageData в модели Core Data.