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?


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.


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.


1

Masalah saya adalah masalah namespace.

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.