Özellik, türü dahili bir tür kullandığından genel olarak bildirilemez


101

İki sınıf oluşturdum Contentve Bucket. Bucketbir dizi Contentnesne içerir ve bunu bir genel mülk aracılığıyla ortaya çıkarır. Ancak bunu yaptığımda şu hatayı alıyorum:

Özellik, türü dahili bir tür kullandığından genel olarak bildirilemez

görüntü açıklamasını buraya girin

Bunun neden bir hata oluşturduğuna dair herhangi bir fikriniz var mı?


Sanki, sadece halka temel bir sınıf ortaya çıkarmak için bir yol görmek güzel olurdupublic(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

Yanıtlar:


175

ContentSınıfın erişim düzeyini de genel olarak beyan etmelisiniz .

public class Content {
   // some code
}

Belgelerde belirtildiği gibi :

Bir genel değişken, dahili veya özel bir türe sahip olarak tanımlanamaz, çünkü tür, public değişkenin kullanıldığı her yerde mevcut olmayabilir.

Sınıflar internalvarsayılan olarak ilan edilir , bu yüzden publiconları herkese açık hale getirmek için anahtar kelimeyi eklemeniz gerekir.

İşlevler için de benzer bir kural vardır.

Bir işlev, parametre türlerinden ve dönüş türünden daha yüksek bir erişim düzeyine sahip olamaz, çünkü işlev, bileşen türlerinin çevreleyen kodda mevcut olmadığı durumlarda kullanılabilir.


3
Mükemmel cevap. Xcode (9.2) yeniden başlatılıncaya kadar hatanın ortadan kalkmayacağını da buldum.
Jasongiss

9

Content ayrıca herkese açık olarak ilan edilmelidir:

public class Content {}

Kullanım durumunuza bağlı Bucketolarak, dahili olarak da ilan edebilirsiniz . publicBu durumda anahtar kelimeyi atlayın .


1

Sorunum bir ad alanı sorunuydu.

DataSwift Datasınıfıyla, özellikle de bir imageData: DataCore Data modelindeki bir mülkle uğraşan bir numaralandırma adı vermiştim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.