Nie można zadeklarować właściwości jako publicznej, ponieważ jej typ używa typu wewnętrznego

101

Stworzyłem dwie klasy Contenti Bucket. Bucketzawiera tablicę Contentobiektów i uwidacznia ją za pośrednictwem właściwości publicznej. Jednak gdy to zrobię, otrzymuję błąd:

Nie można zadeklarować właściwości jako publicznej, ponieważ jej typ używa typu wewnętrznego

wprowadź opis obrazu tutaj

Jakieś przemyślenia, dlaczego powoduje to błąd?

Steve
źródło
Byłoby miło zobaczyć sposób, aby pokazać publiczności tylko podstawowe zajęcia, na przykładpublic(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

Odpowiedzi:

175

Musisz zadeklarować poziom dostępu Content klasy jako publiczny.

public class Content {
   // some code
}

Jak podano w dokumentacji :

Nie można zdefiniować zmiennej publicznej jako typu wewnętrznego lub prywatnego, ponieważ typ ten może nie być dostępny wszędzie tam, gdzie jest używana zmienna publiczna.

Klasy są deklarowane jako internal domyślne, więc musisz dodać publicsłowo kluczowe, aby je upublicznić.

Podobna zasada istnieje również dla funkcji.

Funkcja nie może mieć wyższego poziomu dostępu niż jej typy parametrów i typ zwracany, ponieważ funkcja może być używana w sytuacjach, gdy jej typy składowe nie są dostępne dla otaczającego kodu.

Cihan Tek
źródło
3
Świetna odpowiedź. Stwierdziłem również, że błąd nie zniknie, dopóki Xcode (9.2) nie zostanie ponownie uruchomiony.
Jasongiss
9

Content należy również ogłosić jako publiczne:

public class Content {}

W zależności od przypadku użycia możesz również zadeklarować Bucketjako wewnętrzny. Po prostu pomiń publicsłowo kluczowe w tym przypadku.

Koraktor
źródło
1

Mój problem dotyczył przestrzeni nazw.

Zadeklarowałem wyliczenie wywołane Datai było to zaszuranie z Dataklasą Swift , zwłaszcza imageData: Datawłaściwością w modelu Core Data.

pkamb
źródło