2015-08-03 5 views
42

Ich habe zwei Klassen Content und Bucket erstellt. Bucket enthält ein Array von Content Objekten und macht das über eine öffentliche Eigenschaft verfügbar. Allerdings, wenn ich so tun, erhalte ich die Fehlermeldung:Eigenschaft kann nicht als öffentlich deklariert werden, da ihr Typ einen internen Typ verwendet

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

enter image description here

Irgendwelche Gedanken darüber, warum dies auf einen Fehler erzieht?

+0

Es wäre schön, einen Weg, um zu sehen, nur eine Basisklasse für die Öffentlichkeit aussetzen, wie 'public (Array ) lassen Inhalt: Array ' –

Antwort

84

Sie müssen auch die Zugriffsstufe der Klasse Content öffentlich deklarieren.

public class Content { 
    // some code 
} 

Wie in der documentation erklärte:

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.

Klassen werden als internal standardmäßig erklärt, so dass Sie die public Keyword hinzufügen müssen, um diese zu veröffentlichen.

Eine ähnliche Regel existiert auch für Funktionen.

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

Große Antwort. Ich fand auch, dass der Fehler nicht weggehen würde, bis Xcode (9.2) neu gestartet wurde. – Jasongiss

6

Content muss auch als öffentlich deklariert werden:

public class Content { 
    … 
} 

auf Ihrem Anwendungsfall Je Sie Bucket als interne erklären könnte, auch. Lassen Sie in diesem Fall einfach das Schlüsselwort public weg.

Verwandte Themen