La propiedad no se puede declarar pública porque su tipo usa un tipo interno


100

Creé dos clases Contenty Bucket. Bucketcontiene una matriz de Contentobjetos y la expone a través de una propiedad pública. Sin embargo, cuando lo hago, recibo el error:

La propiedad no se puede declarar pública porque su tipo usa un tipo interno

ingrese la descripción de la imagen aquí

¿Alguna idea sobre por qué esto está generando un error?


Sería agradable ver una manera de exponer solamente una clase básica para el público, comopublic(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

Respuestas:


174

También debe declarar público el nivel de acceso de la Contentclase.

public class Content {
   // some code
}

Como se indica en la documentación :

No se puede definir que una variable pública tenga un tipo interno o privado, porque es posible que el tipo no esté disponible en todos los lugares donde se usa la variable pública.

Las clases se declaran internalde forma predeterminada, por lo que debe agregar la publicpalabra clave para hacerlas públicas.

También existe una regla similar para las funciones.

Una función no puede tener un nivel de acceso más alto que sus tipos de parámetros y tipo de retorno, porque la función podría usarse en situaciones donde sus tipos constituyentes no están disponibles para el código circundante.


3
Gran respuesta. También descubrí que el error no desaparecería hasta que se reiniciara Xcode (9.2).
Jasongiss

9

Content debe ser declarado como público también:

public class Content {}

Dependiendo de su caso de uso, también puede declarar Bucketcomo interno. Simplemente omita la publicpalabra clave en este caso.


1

Mi problema fue un problema de espacio de nombres.

Había declarado una enumeración llamada Datay eso estaba estropeando con la Dataclase Swift , especialmente una imageData: Datapropiedad dentro de un modelo de datos básicos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.