[ios] Xcode 6 버그 : Interface Builder 파일의 알 수없는 클래스

Xcode 6 베타 4로 업그레이드했는데 이제 앱이 계속 메시지와 충돌합니다.

Interface Builder 파일에서 알 수없는 클래스 X

아마도 Xcode가 스토리 보드에서 링크 한 사용자 정의 클래스를 찾을 수 없기 때문에 충돌하지만 Xcode 인터페이스에서 올바르게 링크되었음을 보여줍니다.

나는 모든 것이 올바르게 연결되어 있다고 긍정적입니다. 내 유일한 다른 옵션은 전체 스토리 보드 파일을 삭제하고 어떻게 든 손상 될 수 있기 때문에 처음부터 시작하는 것입니다.

편집 : 또한 청소, 시뮬레이터 재설정, 빌드 단계 등을 어지럽히는 것을 추가하고 싶습니다.



답변

질문을 입력 하면서이 문제를 해결했습니다. Xcode 6 베타 4를 사용할 때이 문제에 직면 할 수있는 다른 사람들을 위해 내 질문에 대답하고 여기에 남겨 두는 것으로 생각했습니다.

이 문제를 해결하려면 스토리 보드에서 각 사용자 정의 클래스 객체를 선택해야합니다 (사용자 정의 뷰, 심지어 사용자 정의 뷰 컨트롤러 자체도 포함).

그런 다음 해당 개체를 선택한 상태로 자격 증명 관리자를 열고 “사용자 정의 클래스”아래에 모듈 옵션이 표시됩니다. 모듈 텍스트 상자 내부를 클릭하고 Enter를 누르십시오.

그게 다야! 내 모든 사용자 정의 객체의 현재 모듈이 Xcode 6 베타 4에서 내부적으로 잘못 설정되어 있어야합니다. 그러나 인스펙터에는 시각적으로 표시되지 않았습니다.

모듈 텍스트 상자에서 Enter 키를 눌러도 작동하지 않으면 오른쪽 화살표를 선택하고 수동으로 현재 모듈을 선택한 다음 텍스트 상자를 지우고 Enter 키를 누릅니다. 클래스 텍스트 상자 안에서 Enter 키를 눌러도됩니다 (일반적으로 다른 문제를 해결하기위한 것이지만).

다음은 더 명확하게 만드는 이미지입니다.
여기에 이미지 설명을 입력하십시오


답변

때때로 Xcode가 누락되었습니다. customModule="AppName" customModuleProvider="target"

문제를 해결하려면 스토리 보드를 소스 코드로 열고 다음 줄을 바꾸십시오.

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

이에:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">


답변

빠른 수업의 이름을 바꾼 후에이 문제가 발생했습니다. @objc 지시문을 사용하여 해결했습니다.

@objc(ForumTopicListViewController) class ForumTopicListViewController


답변

여러 대상이있는 프로젝트

내 경우에는 여러 대상이있는 프로젝트에서 작업하고 있으며 문제는 “대상에서 상속”이 선택되어 있지 않습니다. “대상에서 상속”을 선택하면 문제가 해결되었습니다.

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


답변

이것은 나를 위해 일했다 ..

해당 파일 (예 : ViewController.m)이 추가되었는지 여부에 관계없이 컴파일 된 소스를 확인하십시오. 내 경우에는 ViewController 파일이 추가되지 않아서 오류가 발생했습니다 ..

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


답변

이것은 6.0 이상의 Xcode에서 발생할 수 있습니다. Swift 프로젝트에서 일부 ViewController 클래스의 이름을 바꾼 후에 나에게 일어났습니다 (그러나 Obj-C에서도 발생할 것이라고 생각합니다). 인터페이스 빌더를 열고 클래스 이름이 바뀐 ViewController의 Identity Inspector로 이동 한 후 class를 선택하고 Enter를 누르십시오. 그러면 이름이 바뀐 클래스를 선택된 ViewController에 다시 할당하고 클래스 이름을 바꾼 후 손실되는 모듈 값을 재설정합니다.

Xcode 8.1 업데이트 (아마도 8.0도) :

Xcode 8.1이 충돌합니다. 간단하고 귀찮게 그냥 충돌하고 아무것도 인쇄하지 않습니다. 나는 IB에서 할당되지 않은 클래스라는 것을 알기 위해 팬텀 충돌을 한 시간 동안 쫓고있었습니다. 팬텀 충돌이 발생하면 IB에서 할당되지 않은 클래스를 먼저 확인하십시오.


답변

때로는 제공하는 컨트롤러가 현재 응용 프로그램에서 대상 멤버 자격을 잃습니다. 이 경우 “모듈”필드에서 Enter 키를 누르면 아무 작업도 수행되지 않습니다. 컨트롤러로 이동하여 대상 멤버십이 현재 앱으로 설정되어 있는지 확인하십시오.