Xcode 9 자동 완성이 100 % 작동하지 않음-부분적으로 작동 함


121

오늘 아침 Xcode 9.0 (9A235)은 예전과 전혀 다른 새롭거나 이상한 자동 완성 상자를 보여줍니다. 자동 완성이 평소와 같이 보이도록 전체 자동 완성 상자를 얻으려면 어떻게해야합니까?

여기에 이미지 설명 입력


1
DERIVED DATA 폴더를 삭제하면 문제가 해결되었습니다. 다른 게시물 덕분입니다. 이 게시물 덕분에 : stackoverflow.com/questions/28429630/…
Ernie

인덱싱 이 아직 완료되지 않았기 때문일 것입니다 .
ozgur

1
제안 된 모든 솔루션을 시도했지만 내 프로젝트 중 하나에 도움이되지 않은 것은 없습니다 🙁
Alexander Vasenin

3
11.3은이 문제에 대한 재앙입니다. 종종 Xcode를 다시 시작하면 도움이됩니다. /
Fattie

답변:


234

시험:

  1. 이동 엑스 코드> 환경 설정> 텍스트 편집
  2. 코드 완성에서- '입력하는 동안 완성 제안'을 선택 취소합니다.
  3. Xcode를 종료 한 다음 Xcode를 다시 시작하십시오.
  4. Xcode> 환경 설정> 텍스트 편집으로 다시 이동 하십시오.
  5. Xcode를 종료 한 다음 Xcode를 다시 시작하십시오.
  6. 이제 코드 완성 및 이동 체크 '를 입력하면서 완료 제안'.
  7. 라이브러리 함수 또는 열거 형을 입력하고 즐기십시오!

2
멋진 솔루션입니다. 그래서 이상한. 이것을 어떻게 복제했는지 궁금합니다.
Kunal Gupta

1
백만 달러의 대답. 'Jump to Definition'도 수정되었습니다.
OutOnAWeekend

Xcode 11.2에서 여전히 필요합니다.이 이상한 생활 해킹에 감사드립니다. :-)
Rocket Garden

이것은 항상 새로운 업데이트가 새로운 문제를 만드는 Xcode의 버그입니다. 나를위한 작업 솔루션은 다음과 같습니다. 1- 콰이 트 Xcode. 2- 몇 초 동안 기다리십시오. 3- Xcode를 열되 편집기의 아무 곳이나 클릭하지 않고 아무것도 만지지 마십시오. 4- 인덱싱이 완료 될 때까지 기다립니다. 이제 자동 완성이 작동합니다.
Shahriar

1
XCode 11.5, Catalina, 2020 년 7 월에 여전히 필요합니다. 감사합니다!
Reuben Scratton


30

시도 할 사항 :

1

cocoapods를 사용하는 경우 프로젝트 디렉토리에서 다음 명령을 실행하십시오.

rm -rf ~/Library/Caches/CocoaPods;
rm -rf Pods; rm -rf ~/Library/Developer/Xcode/DerivedData/*;
pod deintegrate; pod setup; pod install;


2

캐시 된 데이터 정리

프로젝트 정리-> Cmd + Shift + K

빌드 폴더 정리-> Cmd + Shift + Option + K

1 단계를 건너 뛴 경우 :
파생 데이터 삭제
Xcode Preferences-> Locations->
화살표 기호DerrivedData -> 폴더 삭제로 이동합니다.


빌드 단계의 컴파일 소스를 확인하십시오.

모든 .swift.m프로젝트 파일이 목록에 있어야하거나 그 파일에 자동 완성하지 않습니다.


4

에디터 최적화 :

항목 당 컴파일러 작업 범위를 줄이기 위해 모든 클래스 속성 및 함수에 fileprivate를 사용합니다.

모듈 식 / OOP 코드를 작성하여 컴파일러가 읽을 수있는 코드를 줄입니다.

결과가 복잡한 계산 인 경우 유형 유추를 사용하지 말고 복잡한 계산을 let this = smallerOperation문 으로 나누십시오 .


XCode 9.2에서는 파생 데이터 폴더에 더 이상 화살표 기호가 없습니다. fileprivate 팁에 감사드립니다. 악몽은 계속됩니다 ...
Sal

여전히 화살표 기호가 보입니다. 이것은 9.2의 이전 버전입니까?
Sethmr

28

Xcode 버전 11.0 (11A420a)

Lal Krishna 의 Xcode V11.0 용 솔루션을 사용해 보았습니다. 몇 번 작동했지만 나중에 결과가 없습니다.

하나의 해결책을 찾았습니다. 다음 두 파일을 삭제해야합니다.

  1. 라이브러리 / 개발자 / Xcode / 파생 데이터 (앞서 설명한대로)
  2. 라이브러리 / 개발자 / Xcode / UserData / IDEEditorInteractivityHistory

그 솔루션은 이제 저에게 도움이됩니다. 다른 사람들에게 유용 할 수 있습니다 😉


3
나를 위해 일했습니다. Visual Studio 2002 (!)가 Xcode 2009-2019보다 낫다고 말하고 싶습니다. 지난 몇 년 동안 Xcode는 너무 버그가 많습니다. 왜 애플이 개발자를 신경 쓰지 않는지 이해할 수 없습니다. 개발자가 만든 Xcode! (나는 그것을 꺼내했다)
user1105951을

그것은 나를 위해 작동합니다 : Xcode를 종료하고 말씀하신대로 2 개의 폴더를 제거하고 Xcode를 다시 시작하면 모든 문제가 사라졌습니다 : D
phuongzzz

20

이는 파일이 대상의 구성원이 아닐 때 발생할 수 있습니다. 자동 완성이 작동하지 않는 파일을 열고 Xcode의 오른쪽 상단에 "유틸리티"탭을 표시합니다 (아래 스크린 샷에서 파란색). Xcode 오른쪽 상단보기 버튼의 스크린 샷

Xcode 대상 멤버십 옵션의 스크린 샷

Target (일반적으로 앱 이름)이 선택되었는지 확인합니다. 자동 완성은 Xcode를 다시 시작하거나, 파생 데이터를 정리하거나 삭제하지 않고도 거의 즉시 작동합니다.

이미 선택되어있는 경우 선택을 취소하고 다시 확인하십시오. 저에게는 트릭이었습니다.


해당 페이지를 열고 닫기 만 작동했습니다. 혼란 스러워요. 감사합니다 btw.
Okhan Okbay

xcode 10에서 작동했습니다. 파일은 실제로 이미 대상의 구성원이었습니다. 체크를 해제 한 다음 다시 확인해야합니다.
Jim75

이것은 git merge 후 나에게 일어났습니다. 한 분기가 현재 프로젝트 파일에 작성하고 다른 분기가 올바르게 병합되지 않은 것 같습니다.
Asfand Shabbir

11

Xcode 10.2를 사용 하고 있는데 동일한 문제가 발생했습니다.

axel 의이 답변 은 제가 고치는 데 도움이되었습니다.

어쨌든 조금 더 설명하겠습니다.

  1. YourProject.xcodeproj오른쪽 마우스 클릭으로 클릭하여 이동하여 엽니 다.Show Package Contents
  2. 이동하여 xcuserdata삭제youruser.xcuserdatad

당신은 또한 xcworkspace (이미있는 경우 포드 설치) 그럼 그냥 3 단계 및 4를 건너 뛸 경우 다음 3 단계 및 4를 수행합니다

  1. 이동 YourProject.xcworkspace오른쪽 마우스 클릭으로 클릭하여 엽니 다.Show Package Contents
  2. 이동 xcuserdata삭제youruser.xcuserdatad

  3. Xcode 종료

  4. 파생 데이터 삭제터미널을 사용하여 :

rm -rf ~ / 라이브러리 / 개발자 / Xcode / DerivedData

  1. Xcode를 열고 작동하는지 확인하십시오.

여기에 이미지 설명 입력


11

파일 이름을 중복으로 지정한 경우에도 발생할 수 있습니다. 예를 들면

Data.swift

Data.swift


1
제 경우에는 이것이 문제였습니다. 2 개의 다른 폴더에 동일한 파일 이름이 있습니다
Raj

이것은 나에게도 발생합니다. 두 개의 ViewController 파일
Shark Deng

1
제 경우에는 ABC라는 가상 그룹과 그 그룹 내에 ABC.swift라는 파일이있었습니다. 파일 이름을 바꾸면이 문제가 해결되었습니다. 감사합니다
Rem-D


5

이것을 시도하십시오 :

파일 선택 >> 파일이 UITesting 또는 UnitTesting 대상에 추가되었는지 확인하십시오 (파일 검사기-> 대상 멤버십) . 그렇다면이 두 가지를 선택 취소하고 프로젝트 대상 만 선택되었는지 확인하십시오. 그런 다음 자동 완성이 제대로 작동하는지 빌드하고 시도하십시오.

이것은 나를 위해 일했습니다. 누군가를 돕기를 바랍니다.


4

오랜 검색 끝에 마침내 문제를 해결했습니다. Xcode> Preferences> Text Editing의 "Code Completion"에서 어떤 이유로 "Escape 키를 사용하여 완성 제안 표시"를 선택했습니다. 이 상자를 선택 취소하자마자 Xcode를 다시 시작할 필요없이 자동 완성 기능이 매력적으로 작동했습니다! (Xcode 10)


4

여기에 약간의 해결 방법이 있지만 작동합니다.

  1. 프로젝트 정리 ... Command + Shift + K

  2. 빌드 폴더 정리 ... Command + Shift + Options (Alt) + K

  3. 프로젝트의 파생 데이터 삭제 ...이 링크를 사용하여 수행 할 수 있습니다.

    Xcode 9에서 파생 데이터를 어떻게 삭제할 수 있습니까?

  4. XCode를 닫습니다.

  5. XCode를 다시 열고 (인덱싱 완료) 프로젝트 빌드 ... Command + B

구축이 완료되면 제안이 돌아옵니다. 나는 그것을 두 번 시도했다.

최신 정보:

때때로 문제는 중복 파일 이름만큼 간단 할 수 있습니다. 추가 한 새 파일 이름이 이전 파일과 충돌하는지주의 깊게 확인하십시오.

Xcode 11.4에서는 기존 파일을 다른 그룹으로 이동하더라도 제안 사항이 사라집니다. 이것은 Xcode를 다시 시작하여 간단하게 치료할 수 있습니다.


3

다른 사람에게 도움이 될 수있는 경우를 대비하여 프로젝트에서 진행중인 작업을 여기에 추가했습니다. 이름이 같은 파일이 2 개 있는데 몰랐습니다.


2

Xcode (9.2)의 자동 완성 악몽을 해결하기 위해 하루를 잃었습니다. 파생 된 데이터를 삭제하는 것은 잠시 작동하는 것처럼 보였지만 상황은 되돌아갔습니다. 재부팅 등 및 기타 제안 된 부두교는 차이를 만들지 못했습니다.

Jet Brains에서 AppCode 30 일 평가판을 포기하고 다운로드했습니다. 자동 완성은 거기에서 잘 작동했으며 우연 일 수도 있지만 Xcode의 내 프로젝트에서 다시 작동하기 시작했습니다. 계속 작동한다고 보장 할 수 없습니다 ...


"다른 제안 된 부두"
lol-잘 말했어

2

제 경우에는 파일 특정인 것 같습니다 (Xcode 9.2) 저에게 수정 사항은 다음과 같습니다.

  1. 문제 파일 삭제 (참조 제거)
  2. 청소 및 구축
  3. 프로젝트에 파일을 다시 추가합니다 (테스트 대상을 확인하지 않았습니다).
  4. 다시 빌드

마지막으로 모든 것을 시도한 지 3 시간이 지나면 자동 완성이 정상적으로 작동합니다.


2

프로젝트 네비게이터에서 일부 파일의 위치가 누락 되었기 때문에 문제가 발생합니다 (빌드 오류).

  1. Command + 1을 눌러 Project Navigator창 열기
  2. 누락 된 파일이 있는지 확인

또는 다음을 수행 할 수 있습니다.

  1. DerivedData 삭제 (command + shift + K)
  2. 빌드 폴더 정리 (command + shift + option + K)
  3. 빌드를 다시 누릅니다 (command + B).
  4. 빌드 도구가 자동 완성을 처리하지 못하게하는 일부 파일을 Xcode에서 찾을 수 없다는 빌드 오류가 표시됩니다.
  5. 표시되는 누락 된 파일을 수정하고 수정합니다.

도움이 되었기를 바랍니다



2

Xcode 11.4 (11E146)의 경우

자동 완성 기능을 중단하는 폴더 이름의 백 슬래시,이 경우 제거하고 다시 빌드하십시오.

여기에 이미지 설명 입력


1

나를 위해 그것은 어떤 이유로 대상의 일부가 아니기 때문에 내 테스트 파일에서 발생했습니다. 목표 멤버십을 설정하면 문제가 해결되었습니다.


1

나에게 문제는 한 파일의 모든 변경 사항 (소스 제어> 커밋 아래)을 폐기하여 파일을 효과적으로 삭제했을 때 발생했습니다. 이것이 내가 원했던 것이고 파일과 그에 대한 모든 참조도 딜링 될 것이라고 생각했습니다.

그러나 프로젝트 탐색기에는 여전히 파일에 대한 참조 (빨간색으로 표시됨)가 있습니다. 프로젝트 네비게이터에서 (현재 존재하지 않는) 파일을 삭제하면 마술처럼 자동 완성 기능이 다시 돌아 왔습니다.

정리, 파생 데이터 삭제 등이 도움이되지 않았습니다. 프로젝트를 빌드하려고 할 때 삭제 된 파일이 여전히 표시되고 있다는 것을 깨달았습니다. 물론 해당 파일을 찾을 수 없어서 실패했습니다.

누군가가 30 분을 절약하는 데 도움이되기를 바랍니다. :)


이유는 내 대답을 참조하십시오.
James Bush

@ponury, 이해가 안 돼요 ... OP 두 번째 단락은 해결책입니다.
brasofilo

1

Command + B
또는 Command + R 을 사용 하여 프로젝트 를 빌드 하거나 실행 합니다.
Xcode가 때때로 엉망이됩니다.)


1
  1. Suggest completions while typingXcode-> Preferences-> Text Editing에서 선택했는지 확인하십시오.
  2. Finder에서 user-> Library-> Developer-> Xcode-> DerivedData로 이동하여 DerivedData 폴더를 삭제합니다.

1

제 사례가 도움이 되기에는 너무 구체적으로 보일 수 있지만 누군가에게 깨진 자동 완성을 해결하는 방법에 대한 아이디어를 줄 수 있습니다. Xcode 10.2.1.

제 경우에는 자동 완성이 완전히 작동하지 않았고 다른 답변이 도움이되지 않았습니다. 또한 컴퓨터의 팬이 과도하게 작동 중임을 나타내는 소리가 더 커질 수 있습니다 (다른 앱이 실행되지 않음). MacBook Pro 랩톱에서 편집 중이라는 점에 유의해야합니다. 내가 작성한 방정식을 구문 분석하기 위해 고군분투하는 편집기와 연결되어있는 것 같습니다.

switch mtype {
    case .indeterminate:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
    case .right:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2) + (frame.width / 2)
    case .left:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2)
 }

사용자 환경 설정에 따라 왼쪽, 오른쪽 또는 중간에 텍스트보기를 애니메이션화하려고했습니다. 는 newPositionA는 CGPoint텍스트에 애니메이션을 것이다. 어쨌든 방정식을 나누고 갑자기 자동 완성이 작동하기 시작했고 팬이 조용해졌습니다! 위 코드를 다시 입력하고 다음으로 대체하여이 특정 문제를 두 번 이상 재현 할 수있었습니다.

let halfFrameWidth: CGFloat = frame.width / 2
let middleLeft = (halfFrameWidth - mainFigureText.frame.width) / 2

switch doseType {
    case .right:
      newPosition.x = middleLeft + halfFrameWidth
    case .left:
      newPosition.x = middleLeft
    default:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
 }

1

나는 솔루션 더미에 하나 더 추가하고 싶습니다. 왜냐하면 그것이 나를 위해 일한 유일한 솔루션이며 여기에서 찾을 수 없기 때문입니다.

Xcode는 일반적으로 모든 프로젝트에 대해 두 가지 기본 빌드 구성을 제공합니다. Release& Debug. 내 단위 테스트를 위해 Testing. Xcode 10.1, 10.2, 10.3 및 11 베타에서 새 빌드 시스템은이를 좋아하지 않는 것 같으며 Release또는을 사용하는 경우에만 자동 완성됩니다 Debug. 모든 사용자 지정 빌드 구성은 단위 테스트가있는 혼합 (swift + objc) 프로젝트에서 자동 완성을 중단합니다.


0

이 링크는 나를 도왔습니다. 빌드 설정을 열고 프레임 워크 검색 경로를 채 웁니다. 아래 이미지를 참조하십시오.

여기에 이미지 설명 입력


0

빌드 오류는 Xcode의 자동 완성 기능을 손상시킬 수 있습니다.


0

자동 완성 기능이 100 % 작동하지 않는 문제가 있었으며 여기에 작성된 문서가 도움이되지 않았습니다. 내가 알아 차린 한 가지는 기본적으로 codegen 클래스 정의가있는 .xcdatamodel 파일에 일부 엔티티를 추가 한 직후에 깨졌습니다.

따라서 이전 스타일의 codegen을 사용하지 않고 클래스를 생성해도 xcode를 다시 시작하지 않아도 문제가 즉시 해결된다는 사실에 놀라지 않았습니다.

여기에 이미지 설명 입력


0

Xcode 11.1에서는 단순히 Clean Build Folder파생 데이터 를 수행 하거나 삭제 하는 것만으로 는 자동 완성을 수정하는 데 충분하지 않았습니다.

내 Mac다시 시작한 후에야 모든 것이 정상으로 돌아 왔습니다.


0

이상한 완료 / 자동 완성 / 지능 (대리자 및 데이터 소스 프로토콜 메서드와 같은 기본 항목이 표시되지 않음)에 문제가있는 경우 대상을 변경 (예 : 시뮬레이터 iPhone 8에서 실제 장치로)하고 프로젝트를 빌드하고 원래 대상으로 다시 전환합니다. .

인터페이스 빌더 (스토리 보드)의 문제와 유사하지만보기의 일부를 선택할 때마다 아무것도 표시되지 않고 "선택된 항목 없음"만 표시됩니다. 다른 Xib / Storyboard로 전환 (또는 새로 생성)하고 작동하는지 확인한 다음 다시 전환하십시오.

이 해결 방법은 두 경우 모두 저에게 효과적이었습니다 (Xcode 10.2.1에서 하나의 프로젝트로 하루에 두 문제가 발생했습니다). 인터넷 포럼을 통해 내가 본 것에서 Xcode 6.x 정도 이후로 수정되지 않은 버그 인 것 같습니다.

건배!


0

제 경우에는 (Xcode 11.1) 이 명령으로 Xcode 자동 인덱싱 을 중지했을 때 발생했습니다 defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

그래서 나는 그것을 defaults write com.apple.dt.Xcode IDEIndexDisable -bool false. 그런 다음 macOS를 다시 시작하고 Xcode를 다시 실행하십시오.


0

Xcode 11.3에서 동일한 문제가 발생했습니다. 위의 내용은 도움이되지 않았으며 빌드 오류가있는 것으로 나타났습니다. 빌드 오류를 수정하면 자동 완성이 다시 작동합니다.

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