Properti tidak dapat dideklarasikan publik karena tipenya menggunakan tipe internal

100

Saya membuat dua kelas Contentdan Bucket. Bucketberisi larik Contentobjek dan memaparkannya melalui properti publik. Namun, ketika saya melakukannya, saya menerima kesalahan:

Properti tidak dapat dideklarasikan publik karena tipenya menggunakan tipe internal

masukkan deskripsi gambar di sini

Adakah pemikiran mengapa hal ini menimbulkan kesalahan?

Steve
sumber
Akan menyenangkan melihat cara untuk hanya mengekspos kelas dasar kepada publik, sepertipublic(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

Jawaban:

174

Anda juga harus mendeklarasikan tingkat akses Contentkelas publik.

public class Content {
   // some code
}

Seperti yang tertera dalam dokumentasi :

Variabel publik tidak dapat didefinisikan memiliki tipe internal atau privat, karena tipe tersebut mungkin tidak tersedia di mana pun variabel publik digunakan.

Kelas dideklarasikan sebagai internaldefault, jadi Anda harus menambahkan publickata kunci untuk membuatnya menjadi publik.

Aturan serupa juga ada untuk fungsi.

Suatu fungsi tidak dapat memiliki tingkat akses yang lebih tinggi daripada jenis parameter dan jenis kembaliannya, karena fungsi tersebut dapat digunakan dalam situasi di mana jenis penyusunnya tidak tersedia untuk kode sekitarnya.

Cihan Tek
sumber
3
Jawaban yang bagus. Saya juga menemukan bahwa kesalahan tidak akan hilang sampai Xcode (9.2) dimulai ulang.
Jasongiss
9

Content harus diumumkan sebagai publik juga:

public class Content {}

Bergantung pada kasus penggunaan Anda, Anda mungkin mendeklarasikan Bucketsebagai internal juga. Abaikan saja publickata kunci dalam kasus ini.

Koraktor
sumber
1

Masalah saya adalah masalah namespace.

Saya telah menyatakan enum dipanggil Datadan itu menyia-nyiakan Datakelas Swift , terutama imageData: Dataproperti dalam model Data Inti.

pkamb
sumber