[xcode] 유형이 내부적이며 동일한 모듈에 존재하더라도 Swift에서 “선언되지 않은 유형 사용”

내 모듈에 유형이 있습니다.

import Cocoa

class ColoredDotView : NSView {
   ...
}

문제없이 여러 가지 다른 클래스에서 사용됩니다.

class EditSubjectPopoverController : NSObject {

    @IBOutlet internal var subjectColorDotView : ColoredDotView!
    ...
}

그러나 어떤 이유로 하나의 특정 클래스 에서 사용 하면 유형에 대한 컴파일 오류가 있습니다.

class EditTaskPopoverController : NSObject {

    @IBOutlet internal var lowPriorityDotView : ColoredDotView! // Error here
    @IBOutlet internal var medPriorityDotView : ColoredDotView! // And here...
    @IBOutlet internal var highPriorityDotView : ColoredDotView! // And here...
    ...
}

컴파일 오류는 다음과 같습니다.

EditTaskPopoverController.swift : 15 : 49 : 선언되지 않은 ‘ColoredDotView’유형 사용

이해가 안 돼요 파일의 첫 번째 컴파일 오류이며 나머지 오류는 모두 첫 번째의 증상입니다. 또한 컴파일 오류가있는 다른 파일없습니다 . 파일이 동일한 모듈에 있기 때문에 유형이 선언되지 않은 이유를 이해할 수 없습니다.

여기에 이미지 설명을 입력하십시오

프로젝트 정리, 빌드 폴더 정리 및 Xcode 재시작을 시도했지만 아무 소용이 없습니다. undeclared typeSwift에서 컴파일러 오류를 일으킬 수있는 잠재적 인 실수는 무엇입니까 ?



답변

내 테스트 대상에 내 앱 빌드 대상에 컴파일 소스에있는 빠른 파일이 없을 때이 오류가 발생했습니다. ‘선언되지 않은 유형’이 다른 많은 장소에서 문제없이 사용되어 매우 혼란 스러웠으며 오류가 모호해 보였습니다. 따라서 해결책은 ‘선언되지 않은 유형’을 포함하는 파일을 테스트 대상에 추가하는 것입니다.


답변

이것은 @Craig Otis에 의해 이미 답변되었지만 문제의 클래스가 동일한 대상에 속하지 않을 때 문제가 발생합니다. 일반적으로 테스트 대상이 없습니다. 다음 확인란이 선택되어 있는지 확인하십시오.


대상 회원

편집하다

대상 멤버쉽을 보려면 파일을 선택한 다음 파일 관리자를 엽니 다 (⌥ + ⌘ + 1) [ 옵션 ] + [ 명령 ] + 1

상세 설명


답변

휴, 마침내 이것을 진단했습니다. 어떻게 든 문제가되는 Swift 파일 EditTaskPopoverController.swift은 두 가지 빌드 단계에있었습니다.

에 있었다 Compile Sources 다른 모든 스위프트 파일을 제대로 만했다 또한 에, 매우 이상한 이유로, Copy Bundle Resources내 모든 XIB 및 이미지 자료와 함께,뿐만 아니라 상.

나는 그것이 어떻게 도착했는지 알지 못하지만 여분의 빌드 단계에서 제거하면 문제가 해결되었습니다.


답변

XCode 메뉴에서 Product-> Clean 다음 Product-> Build가 나를 위해 일했습니다. 새 그룹 / 폴더의 프로젝트에 새 ViewController를 추가 할 때이 문제가 발생했습니다.


답변

나는 똑같은 문제가 있었다. 내 프레임 워크의 일부 파일은 동일한 모듈 내 다른 클래스에서 도달 할 수 없었습니다.

어떤 이유로 Xcode의 프레임 워크에 추가 된 파일은 컴파일 소스의 일부가 아닙니다. Swift 파일이 컴파일 소스의 일부가 아닌 경우 +를 누르고 팝업에서 파일을 선택하여 추가해야합니다.

스크린 샷 1

또한 파일이 프레임 워크 대상의 일부인지 확인하십시오. (아래 스크린 샷의 작은 상자를 선택해야합니다)

스크린 샷 2


답변

나를위한 원인은 유형과 동일한 문자로 시작하는 함수 이름이었습니다.

@IBOutlet weak var tableView: CustomTableView!

구현에서 CustomTableView로 시작하는 함수가 있습니다.

func CustomTableView(tableView: CustomTableView, dataForRow row:  Int) -> NSData {...}

수정은 함수 서명이 유형 (CustomTableView)과 같은 문자로 시작하지 않도록 변경되었습니다. 예를 들면 다음과 같습니다.

func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}

이것은 내 경우의 실제 원인에 대해 매우 잘못된 오류 메시지였습니다.


답변

누군가 비슷한 문제가 발생하지만 컴파일 소스 수정으로 문제해결 되지 않으면 Xcode를 다시 시작하면 나에게 도움이 될 수 있습니다. 내 Xcode 버전은입니다 Version 6.1 (6A1052d).