2015-08-03 8 views
42

Utworzono dwie klasy: Content i Bucket. Bucket zawiera tablicę obiektów Content i udostępnia ją za pośrednictwem właściwości publicznej. Jednak, kiedy to zrobić, otrzymuję błąd:Właściwość nie może być zadeklarowana publicznie, ponieważ jej typ używa typu wewnętrznego

Property cannot be declared public because its type uses an internal type

enter image description here

jakieś przemyślenia na temat tego, dlaczego jest podnoszenie błąd?

+0

Byłoby miło zobaczyć sposób, aby tylko narazić podstawową klasę dla publiczności, podobnie jak 'publicznych (array ) Niech zawartość: Array ' –

Odpowiedz

84

Musisz zadeklarować również poziom dostępu dla klasy publicznej Content.

public class Content { 
    // some code 
} 

Jak stwierdzono w documentation:

A public variable cannot be defined as having an internal or private type, because the type might not be available everywhere that the public variable is used.

Zajęcia są zadeklarowane jako internal domyślnie, więc trzeba dodać słowo kluczowe public do ich upublicznienia.

Podobna zasada obowiązuje również w przypadku funkcji.

A function cannot have a higher access level than its parameter types and return type, because the function could be used in situations where its constituent types are not available to the surrounding code.

+1

Świetna odpowiedź. Odkryłem również, że błąd nie zniknie, dopóki Xcode (9.2) nie zostanie ponownie uruchomiony. – Jasongiss

6

Content muszą być zadeklarowane jako publiczne też:

public class Content { 
    … 
} 

zależności od przypadków użycia może zadeklarować Bucket jako wewnętrzne, too. Po prostu pomiń w tym przypadku słowo kluczowe public.

Powiązane problemy