A propriedade não pode ser declarada pública porque seu tipo usa um tipo interno

100

Criei duas classes Contente Bucket. Bucketcontém uma série de Contentobjetos e os expõe por meio de uma propriedade pública. No entanto, ao fazer isso, recebo o erro:

A propriedade não pode ser declarada pública porque seu tipo usa um tipo interno

insira a descrição da imagem aqui

Alguma ideia de por que isso está gerando um erro?

Steve
fonte
Seria bom ver uma maneira de expor apenas uma aula básica ao público, comopublic(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

Respostas:

173

Você também deve declarar o nível de acesso da Contentclasse como público.

public class Content {
   // some code
}

Conforme indicado na documentação :

Uma variável pública não pode ser definida como tendo um tipo interno ou privado, porque o tipo pode não estar disponível em todos os lugares em que a variável pública é usada.

As classes são declaradas como internalpadrão, então você deve adicionar a publicpalavra-chave para torná-las públicas.

Uma regra semelhante também existe para funções.

Uma função não pode ter um nível de acesso mais alto do que seus tipos de parâmetro e tipo de retorno, porque a função pode ser usada em situações onde seus tipos constituintes não estão disponíveis para o código circundante.

Cihan Tek
fonte
3
Ótima resposta. Também descobri que o erro não iria embora até que o Xcode (9.2) fosse reiniciado.
Jasongiss
9

Content deve ser declarado como público também:

public class Content {}

Dependendo do seu caso de uso, você também pode declarar Bucketcomo interno. Apenas omita a publicpalavra - chave neste caso.

Koraktor
fonte
1

Meu problema era um problema de namespace.

Eu havia declarado um enum chamado Datae que estava fazendo bagunça com a Dataclasse Swift , especialmente uma imageData: Datapropriedade dentro de um modelo de dados principais.

pkamb
fonte