developer tip

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

optionbox 2020. 11. 19. 08:06
반응형

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


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

여기에 이미지 설명 입력


시험:

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

DERIVED DATA 폴더를 삭제하면 문제가 해결되는 것 같습니다. 이 게시물 덕분에 코드를 작성하는 동안 자동 완성 옵션을 표시하지 않는 swift println ()


시도 할 사항 :

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의 오른쪽 상단에 "유틸리티"탭을 표시합니다 (아래 스크린 샷에서 파란색).Xcode 오른쪽 상단보기 버튼의 스크린 샷

Xcode Target Membership 옵션의 스크린 샷

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


테스트 대상에서 파일을 제거하면 문제가 해결되었습니다.


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를 열고 작동하는지 확인하십시오.

여기에 이미지 설명 입력


이것을 시도하십시오 :

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

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


오랜 검색 끝에 마침내 문제를 해결했습니다. Xcode> 환경 설정> 텍스트 편집의 "코드 완성"에서 어떤 이유로 "Escape 키를 사용하여 완성 제안 표시"를 선택했습니다. 이 상자를 선택 취소하자마자 Xcode를 다시 시작하지 않고도 자동 완성 기능이 매력적으로 작동했습니다! (Xcode 10)


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

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


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

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

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


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

  1. Project Navigator을 열려면 command + 1을 누르 세요.
  2. 누락 된 파일이 있는지 확인

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

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

도움이 되었기를 바랍니다


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

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

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

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

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

  4. XCode를 닫습니다.

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

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


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


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

Data.swift

Data.swift


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


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

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

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

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


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


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

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

여기에 이미지 설명 입력


빌드 오류로 인해 Xcode의 자동 완성 기능이 중단 될 수 있습니다.


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

In my case, auto-complete stopped working entirely and non of these other answers helped me. In addition, the fan on the computer could be heard to go louder indicating something was overworking (no other apps running), it should be noted I was editing on a MacBook Pro laptop. It seemed to be linked with the editor struggling to parse the equation I'd written:

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)
 }

I was looking to animate a text view left, right, or to the middle depending on user prefs. The newPosition is a CGPoint that the text will animate to. Anyway, I split the equations up and all of a sudden auto-complete started working and the fan went quiet! I've been able to recreate this specific problem more than once by re-typing the above code and then replacing it with:

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
 }

I had the issue with 100% not working auto-complete, none of written here helped. One thing I noticed – it was broken right after adding some entities into .xcdatamodel file, which have codegen class definition by default.

So I wasn't surprised when using old-style codegen none (and generating classes of course) fixed the issue immediately, even without restarting the xcode.

여기에 이미지 설명 입력


I would like to add one more to the pile of solutions, because it is the only one that worked for me and is nowhere to be found here.

Xcode normally comes with two default build configuration for every project. Release & Debug. I have an extra one for my unit tests called Testing. In Xcode 10.1, 10.2, 10.3 and 11 beta, the new build system does not seem to like it and will only auto-complete if you either use Release or Debug. Any custom build configuration breaks auto-completion in mixed (swift + objc) project with unit tests.


The only time auto-complete doesn’t work is when the source code type for the file is not set to Objective-C or when you’re writing in another language (even if only a little snippet of, say, C).

편집중인 줄 위 또는 위에 구문 오류가있는 경우에도 작동하지 않습니다. 메서드 호출 끝에 중괄호가 누락되면 (편집중인 파일에 없더라도) 자동 완성이 관련 명령을 제안하는 데 필요한 컨텍스트를 얻지 못합니다. 따라서 작업중인 파일이 아니더라도 누락 된 파일 (파일 목록에 빨간색으로 표시됨)이 표시됩니다.

그렇게 할 때 빌드를 시도하여 오류를 찾은 다음 수정하십시오.

참고 URL : https://stackoverflow.com/questions/46504286/xcode-9-autocomplete-not-working-100-partially-working

반응형