“ViewController라는 클래스에 대한 정보를 찾을 수 없습니다”


154

이 버그는 Xcode (4.6.3)를 사용하기 시작한 이후로 불쾌했습니다. 스토리 보드 항목을 코드에 연결하려고 할 때마다 오류가 발생합니다.

이름이 ViewController 인 클래스에 대한 정보를 찾을 수 없습니다.

이것은 커스텀 클래스에서도 발생합니다. 나는 다음과 같은 방법을 시도했다.

  • 델리게이트 데이터 삭제
  • 클래스 제거 및 다시 추가
  • Xcode를 다시 시작합니다.
  • Xcode 재설치

수업이 무엇이든 상관없이 프로젝트에서 연결을 만들기 위해 Ctrl 키를 누른 채 끌 수 없습니다. 새로운 템플릿 응용 프로그램에서도 동일한 문제가 발생합니다. 코드를 수동으로 입력 한 다음 Ctrl 키를 누른 상태에서 드래그하면 작동하는 연결을 만들 수 있지만 자동으로 추가 할 수는 없습니다. 지금까지 인터넷에서 찾을 수 없었던 것은 아무것도 없었습니다. 어떤 포인터?


ViewController .m 파일이 올바른 대상에 포함되어 있는지 세 번 확인 하시겠습니까? (오른쪽 인스펙터 패널의 확인란)
Alfie Hanssen

2
스토리 보드에 뷰 컨트롤러가 있고 뷰를 관리하기 위해 인스턴스화해야하는 클래스 이름에 "ViewController"를 지정했습니다. 스토리 보드에서 각 뷰 컨트롤러를 확인하십시오. 뷰 컨트롤러를 선택하고 오른쪽 창에서 "identity inspector"를 확인한 다음 "Custom Class"속성을 확인하십시오. "ViewController"라고 표시되면 문제가있는 것입니다. 뷰 컨트롤러를 관리 해야하는 클래스 이름을 입력하거나 기본 UIKit 구현을 얻으려면 UIViewController를 입력하십시오.
Nicholas Hart

1
ID 관리자에서 사용자 정의 클래스를 "UIViewController"로 변경했으며 스토리 보드에서 ViewController.h로 더 이상 Ctrl 키를 누른 채 끌 수 없었습니다. 새 클래스를 만들고 뷰 컨트롤러 클래스를 적절하게 설정 한 후 Ctrl 키를 누른 상태에서 드래그하면 동일한 "정보를 찾을 수 없습니다"라는 오류가 발생합니다.
user2597451

4
나는이 문제를 겪었고 자동 생성 된 ViewController 클래스를 수정 하는 것이 나를 위해 일했다. 예 단지를 추가 NSLog()viewDidLoad:
JB

답변:


292

이 문제를 해결 한 것은 실제로 프로젝트에서 클래스를 삭제하는 것이 었습니다.

단계 :

  1. 프로젝트 파일 탐색기 (왼쪽 패널)에서 클래스를 찾아 마우스 오른쪽 버튼으로 클릭-> 삭제
  2. 참조를 제거하십시오 (수업을 잃을 수 있으므로 휴지통으로 이동하지 마십시오)
  3. 클래스가 포함 된 폴더를 마우스 오른쪽 버튼으로 클릭-> 파일 추가 ...
  4. 파일 시스템에서 방금 삭제 한 클래스 찾기

이것은 Xcode가 클래스를 스토리 보드에 다시 연결하도록 강제하는 것 같습니다.

참고 : 나를 위해 다음은 작동 하지 않았습니다 .

  • Xcode 닫기
  • 프로젝트 청소
  • 스토리 보드에서 수업 이름을 삭제하고 다시 입력

나는 이것이 애플의 버그라고 생각한다.


8
나는 이것을 시도했지만 그것은 나를 위해 작동하지 않았다 /-: 같은 오류.
Michael

1
@ 마이클, 네, 이제 위의 어느 것도 전혀 작동하지 않는 상황에 처해 있습니다. Xcode는 ***
Chris Harrison

5
이 문제는 2013 년 7 월로 거슬러 올라갑니다. 2016 년 5 월 현재이 버그로 동일한 버그가 수정되었습니다. 몇 년 동안 애플은 어떻게 그것을 고치지 않습니까?
SkyWalker

3
이것이 여전히 문제라고 믿을 수 없습니다. XCode 8.1에서이 작업을 수행해야했습니다.
fisk

2
2017 (버전 8.2 (8C38)) 및 Xcode SUCKS는 여전히 살아 있습니다. 스토리 보드에서 한 장면에서 다른 장면으로 UI 직원을 복사하여 붙여 넣을 때 발생합니다.
Jaime Agudo

135

누구든지 여전히 이것에 의해 좌절을 느끼면 일을 처리하는 비법이 있습니다.

내가하는 일은 클래스에 콘센트를 수동으로 입력하는 것입니다 (예 :). 코드 에서 IB 또는 스토리 보드의 뷰로 @IBOutlet weak var someView: UIView!드래그 하십시오 . 그런 다음 IB / 스토리 보드에서 수업으로 드래그하여 연결할 수 있으며 보조 편집자는 "자동"등으로 수업을 인식합니다.

매번 작동합니다.


6
@ Gmeister4, 코드에서 콘센트를 만들면 콘센트 왼쪽에 작은 원이 표시됩니다. 원을 클릭하고 IB 또는 스토리 보드의보기로 끌어 연결하십시오.
앤드류 로빈슨

4
최고 답변보다 쉽습니다. +1
cph2117

2
여전히이 후에도 적절한 방법으로 할 수는 없지만 적어도 이것이 효과가 있습니다!
Alexandre G

1
위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 이 답변 만 나를 위해 일했습니다.
coolcool1994

1
굉장해!
Sam

38

오른쪽 열의 대상 멤버십에서 해당 멤버를 제거하고 다시 추가하면 속임수가되었습니다. 여기에 이미지 설명을 입력하십시오


이것은 또한 나에게서 일했다. ViewController.swift 클래스를 복제했는데 이것이 해결책 인 것 같습니다.
UberJames

나는 그것이 Xcode 8.0에 여전히 존재하는 Xcode의 버그라고 생각한다
jiangjiefs

이것은 Xcode 8.3.3에서 지금 나에게 발생했으며 솔루션은 가장 간단하고 효과적입니다. 감사합니다 !!!
RoberRM

Xcode 11.5에는 여전히 존재합니다 (심각하게 Apple을 의미합니까 ??). 나를 위해 일한 솔루션 만 여기에 나열되었습니다.
크리스토프 폰다 치

12

때때로 Xcode는 VC가 클래스 파일을 참조하지 않기 때문에 발생합니다. 이를위한 간단한 해결책은 다음과 같습니다.

주어진대로 수동으로 속성을 작성하십시오.

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

이렇게하면 @IBOutlet 앞에 빈 링크 기호가 만들어 지고 보조 편집기에서 프로젝트를 연 다음 링크 기호를 클릭 여기에 이미지 설명을 입력하십시오하고 연결할보기로 드래그 하십시오 (TableView에 연결되어 있음). 그리고 그게 다야. 행복한 코딩을 즐기십시오!


8

2017 년 4 월 Xcode 8 에서이 문제가 발생했습니다.

코드를 통해 콘센트를 만들고 컴파일하면 간단합니다. 예 :

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

Xcode를 좋아해야합니다…

편집 : Xcode 9에서 여전히 발생


7

다음 단계는 저에게 효과적입니다.

1- Xcode를 닫은 후 프로젝트를 다시 열어야합니다.

2- 프로젝트 파일 색인 생성을 기다립니다

3- 작동 여부 확인

4- 그래도 작동하지 않으면 5 단계를 따르십시오.

5- 프로젝트 타겟 정리 및 구축

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


7

나는 모든 것을 시도했지만 작동하지 않았으므로 나를 위해 일한 것은 다음과 같습니다.

  • 빌드 폴더 및 프로젝트를 정리하십시오.
  • 프로젝트 열기 (윈도우-> 프로젝트)
  • 목록에서 프로젝트를 찾아 파생 데이터를 삭제하십시오.
  • Xcode 닫기
  • 컴퓨터를 다시 시작합니다 (열린 창을 다시 열지 않고)
  • Xcode를 실행
  • 작업!

내 모든 뷰 컨트롤러가 인식되지 않았으므로 모든 파일을 삭제하고 다시 추가하는 것은 큰 프로젝트이므로 옵션이 아닙니다.


4

나를 위해 다음이 효과가있었습니다.

  1. 'clean'및 'clean build folder'를 수행하십시오 ( 'clean build folder'명령을 얻으려면 Product 메뉴에서 'option'을 누르십시오)

  2. Xcode 중지

  3. 터미널에서 파생 데이터 폴더로 이동하십시오.

    (/ 사용자 // 라이브러리 / 개발자 / Xcode / DerivedData)

프로젝트의 파생 데이터 디렉토리를 삭제하십시오.

  1. 공중에서 죽은 치킨

  2. Xcode 시작


3

지금까지 두 가지 답변을 조합해야했습니다.

  1. 스토리 보드에서 사용자 정의 클래스 이름을 제거하십시오.

(스토리 보드에서보기 컨트롤러의 왼쪽 상단에있는 노란색 버튼을 클릭하고-> 신원 관리자로 이동합니다 (옵션 + 명령 + 3)-> 상단에서 사용자 정의 클래스 이름 삭제)

  1. 뷰 컨트롤러 파일에 대한 참조를 제거하십시오.

(파일을 마우스 오른쪽 버튼으로 클릭-> 삭제-> 참조 제거)

  1. 뷰 컨트롤러 파일을 프로젝트에 다시 추가하십시오.

(파일이있는 폴더를 마우스 오른쪽 버튼으로 클릭-> "[프로젝트]에 파일 추가")

  1. 스토리 보드에 사용자 정의 클래스 이름을 다시 추가하십시오.

3

사람들이 위의 시도를했지만 여전히 작동하지 않는 경우 나를 위해 일한 이상한 트릭은 콘센트에 공백을 추가하는 것이 었습니다. 추가하는 줄 바로 위나 아래에 다른 줄이 없으면 작동합니다. 이상하지만 효과가있었습니다!


3

나를 위해 일한 것은 버튼에서 코드로 연결을 드래그하는 대신 다음과 같습니다.

  1. 원하는 스토리 보드 항목을 클릭하십시오.
  2. 연결 관리자 열기 (오른쪽 패널)
  3. + 서클에서 코드 영역으로 드래그 이렇게 :

이 방법으로 코드를 연결 한 후에는 정상적으로 작동했습니다.


3

목표를 유지하십시오!

나는 Xib와 함께 새로운 수업을 추가하고 있었고이 문제를보기 시작했으며 여기에 대한 답변을 살펴보고 그 중 어느 것이 변화했는지 확인하는 데 좋은 시간을 보냈습니다.

그것이 일어날 때, 나는 작업 공간에 여러 대상을 가지고 있으며 종종 그들 사이를 전환해야합니다.

새 파일을 추가하면 Xcode에서 다시 색인이 시작됩니다. 그러나 잘못된 대상을 가리키면 인덱싱이 의미가 없으며 Xcode를 연결하는 동안 클래스를 찾을 수 없습니다.

한마디로

1 단계.

표적 격리

인덱싱이 적합하도록 올바른 대상 세트가 있는지 확인하십시오.


3

이것은 나를 위해 일했다 :

  1. ' 클린 빌드 폴더 '를 수행하십시오
    ( '옵션'키를 길게 누르고 " 제품으로 이동하십시오. 액세스 그것에"메뉴를 선택합니다.
  2. " Product "메뉴 에서 간단한 "Clean"(CMD-SHIFT-K)을 수행하십시오 .
  3. Xcode가 파일을 컴파일 할 수 있도록 프로젝트를 빌드 하십시오. 또한 필요한 경우 파일을 색인화하십시오.

참고로, 이것이 도움이되는지 확실하지 않지만 위 단계를 수행하기 전에 파생 데이터 도 삭제했습니다 (Xcode 환경 설정> 위치)


2

storyBoard에서 ViewController를 선택하고 오른쪽 패널 / "Customer class"/ "class" 에서 현재 값을 삭제 한 다음 제어 클래스를 다시 추가하십시오 (유형 : "SampleViewController"...). -> 저에게 효과적입니다


2

나는이 답변을 모두 시도했지만 문제는 Xcode가 파일을 색인 할 수 없다는 것과 관련이 있습니다. Xcode를 종료하고 프로젝트를 다시 열어서이 문제를 해결했습니다. 물론 위의 모든 해결책을 시도한 후에 그렇게했습니다.


2

제품> 청소 (Command-Shift-K)로 해결했습니다!


2

이것은이 문제를 해결하기 위해 수행 한 가장 쉬운 단계입니다.

  1. 나는 프로젝트를 청소
  2. 뷰 컨트롤러에서 새 버튼을 드래그하십시오.
  3. 프로젝트를 빌드하십시오.
  4. 새로 드래그 한 버튼을 클래스 (콘센트 또는 액션)에 연결합니다.
  5. 그럼 짜잔! 다른 콘센트를 클래스에 다시 연결할 수 있습니다!

1

내 테스트 경험으로 Xcode에 연결된 클래스를 삭제하고 파일을 다시 추가하면이 문제가 발생합니다.


1

보통 이것이 나에게 일어날 때 나는 클래스의 코드를 아직 저장하지 않았다. 코드로 건너 뛰고 cmd + s를 누르면 문제가 올바르게 해결됩니다.



1

위의 단계 중 어느 것도 나를 위해 효과가 없었지만 문제를 발견했을 수도 있습니다. 적어도 그것은 나를 위해 일한 것이며 Xcode의 버그는 아닙니다.

어시스턴트 편집기에서 viewController에 대한 코드가있는 창 상단을보십시오. 오른쪽에서 세 번째 옵션은 "수동"으로 표시되지만 "자동"으로 표시되어야합니다. 이것을 변경하면 문제가 해결되었습니다!


1

비슷한 이름의 "클래스를 찾을 수 없습니다 ..."라는 문제가 발생했습니다. 일단 이해하면 원인이 어리 석었습니다. 항목에서 인터페이스로 드래그하지 않는지 확인하십시오 -클래스 자체로 드래그되는지 확인하십시오


1

나는 모든 것을 시도했다!

UIViewController의 클래스 이름에 "Test"라는 단어가 포함되어 있지 않은지 확인하십시오.

버그 보고서가 제출되었습니다.


이것이 유일한 원인이라고 확실히 말하지 않습니다. 이것이 또 다른 사실입니다.
Aaron Kreipe

모든 파생 데이터를 삭제하고 프로젝트를 정리하십시오. 그러나 이것은 버그이며 당신이 옳습니다.
Genevios

0

문제의 .m 및 .h 파일을 다시 만들어 "ViewController"와 같은 일반적인 이름이 아닌 원래 이름을 지정하려고합니다. 해당 파일의 행을 따라 더 많은 것을 시도하고 View Controller로 끝나십시오 (예 : "PizzaDecoraterViewController")

그런 다음 해당 파일에 연결하려는 ViewController를 선택하십시오. 객체가 아닌 ViewController를 선택해야합니다. 하단의 검은 색 막대 ( "처음 응답자"및 "종료"아이콘이있는 막대)를 클릭하십시오. 전체 ViewController는 파란색으로 표시되어야합니다. 그런 다음 Identity Inspector의 Custom Class 섹션으로 이동하면 첫 번째 필드에 회색으로 표시된 "UIViewController"가 표시됩니다. 해당 필드에 연결하려는 .h 또는 .m 파일의 이름을 입력하십시오 (PizzaDecorator 입력 시작 ... 그리고 약간의 자동 완성 작업을 수행해야 함). 그런 다음 ENTER를 누르십시오.

Assistant Editor를 열 때 끌어서 놓으려는 파일이 실제로 올바른 파일인지 확인하십시오.

위에서 말한대로 모든 작업을 수행 한 경우 작동합니다.


불행히도 여전히 작동하지 않습니다. 나는 아무 소용없이 전에 이것을 시도했습니다. 스크린 샷은 다음과 같습니다. i.imgur.com/5ixtcps.png
user2597451

허. 이상한. 프로그래밍 방식으로 (예 : @property (비 원자, 강력한) IBOutlet UIView * test;) 추가 한 다음 옆에 작은 원이 나타나면 UIView로 끌어다 놓습니다.
CaptJak

그것은 작동하고 항상 가지고 있으며 (그리고 앱은 정상적으로 실행되는 것처럼 보이지만) 자동으로 추가되지 않는 문제를 해결하려고합니다.
user2597451

음, 그렇게 작동하면 다른 방식으로 작동해야합니다. XCode에 버그가 있습니까? 이전 버전 (예 : 4.6.2 또는 기타)을 가져 와서 설치하십시오. 그렇지 않으면 ummmmmmmmmmmmmmm ...... yeah ....
CaptJak

그래, 내가 두려워하는거야. 제거 및 재설치가 작동하지 않아서 실수를하고 싶었습니다. Xcode 사본을 다운 그레이드하는 가장 좋은 방법은 무엇입니까?
user2597451


0

파일 (참조 만)을 삭제하고 파일을 다시 추가하십시오.


0

내 경우에는 효과가 있었지만 (정말 이상하지만 효과가 있음) 다음과 같습니다.

데이터 소스 (예 : UITableViewDataSource와 같은 ViewController의 확장)를 추가하십시오. Xcode는 ViewController를 다시로드하려고 시도합니다. 그런 다음 프로토콜의 일부 메소드를 작성했습니다 (처음에는 Xcode가 메소드를 자동 완성하지 않고 수동으로 작성했습니다). 그런 다음 IBOutlets를 추가 한 다음 마지막으로 데이터 소스를 제거했습니다.

예:

class TestViewController:UIViewController{
    // This viewController presents “Could not find any information for  class named ViewController”
}

extension TestViewController:UITableViewDataSource{
    //Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}

0

나를 위해 인터페이스 클래스에서 사용자 정의 클래스를 지정한 뷰를 컴파일하지 못했습니다. 로 표시되었습니다 @IBDesignable.

을 제거한 @IBDesignable다음 콘센트를 추가 한 다음 @IBDesignable문제가 해결 된 것으로 표시했습니다 .



0

그냥 시도 해봐

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable
defaults write com.apple.dt.Xcode IDEIndexEnable 1 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.