유형이 내부 유형을 사용하므로 속성을 public으로 선언 할 수 없습니다.


100

두 개의 클래스 ContentBucket. 객체 Bucket의 배열을 포함하고 Content공용 속성을 통해이를 노출합니다. 그러나 그렇게 할 때 오류가 발생합니다.

유형이 내부 유형을 사용하므로 속성을 public으로 선언 할 수 없습니다.

여기에 이미지 설명 입력

이것이 오류를 일으키는 이유에 대한 생각이 있습니까?


일반인에게만 기본 클래스를 노출하는 방법을 보는 것이 좋을 것입니다.public(Array<NSObject>) let contents: Array<Content>
Ben Leggiero

답변:


174

Content공용 클래스 의 액세스 수준도 선언해야합니다 .

public class Content {
   // some code
}

문서에 명시된대로 :

공용 변수는 공용 변수가 사용되는 모든 곳에서 사용 가능하지 않을 수 있으므로 내부 또는 개인 유형을 갖는 것으로 정의 할 수 없습니다.

클래스는 internal기본적으로 선언되어 있으므로 public공용으로 만들 려면 키워드를 추가 해야합니다.

함수에도 비슷한 규칙이 있습니다.

함수는 주변 코드에서 구성 유형을 사용할 수없는 상황에서 함수를 사용할 수 있기 때문에 매개 변수 유형 및 반환 유형보다 더 높은 액세스 수준을 가질 수 없습니다.


3
좋은 대답입니다. 또한 Xcode (9.2)를 다시 시작할 때까지 오류가 사라지지 않는다는 것을 알았습니다.
Jasongiss

9

Content 공개로도 선언해야합니다.

public class Content {}

사용 사례에 따라 Bucket내부로 선언 할 수도 있습니다. public이 경우 키워드를 생략하십시오 .


1

내 문제는 네임 스페이스 문제였습니다.

나는 enum을 선언 Data했고 그것은 Swift Data클래스, 특히 imageData: DataCore Data 모델 내의 속성 을 망쳐 놓았습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.