[Xcode]error type이 나타나서 올바르지 않을 때 대처하는 방법

4580 단어 XcodeSwiftiOS
여러분은 보완 기능이 있는 IDE를 좋아하시나요, 아니면 보완 기능이 없는 IDE를 좋아하시나요?나는 보충 기능이 있는 IDE를 더 좋아한다.그러나 슬프게도 최근 특정 항목에서 Xcode의 보충 기능이 상실되는 현상을 만났다.

발생한 현상



구체적으로 말하면 위에서 말한 바와 같이 변수의 유형에 <<error type>>, <<error type>>로 표시되는 변수에 대해서는 보충과 코드 점프 등 IDE 기능을 사용할 수 없다.

이렇게 해도 tableView. 보충은커녕 경고가 나온다.아니, 경고하고 싶은 건 나야.member name의 후보는 네가 일찍 제시한 기분이다.유형의 정보를 잃어버렸기 때문에 텍스트의 색깔도 모두 검은색이다.
또 이 문제는 Xcode 7.3 정도부터 발생했고 Xcode8도 마찬가지로 발생한 것으로 확인됐다.

개선하기 위해 시도한 일


나는 아래의 일을 시도했지만 효과가 없었다.
  • Clean
  • Xcode 재부팅
  • Derived Data 삭제
  • 기도하면서 Swift3.0
  • 정확히 말하면 Derived Data를 삭제하는 것은 한순간에만 효과가 있지만 몇 분 작업하면 나타난다<<error type>>.

    해결 방법


    직접적인 도움이 되는 것은 애플 포럼의 다음 댓글이다.
    개괄적으로 말하다
  • CococaPods에서 헤드 파일을 구축 디렉토리로 복사
  • 따라서 SourceKit이 코드를 제대로 해석하지 못함
  • 해결을 위해 구축 후 구축 디렉터리의 여분의 헤더 파일을 삭제하면 된다
  • 구체적으로 항목 설정Build Phases에 다음Run Script을 추가한다.
    sh
    function removeHeaders() {  
        find $BUILD_ROOT/Debug-iphonesimulator/  -name '*.h' -exec rm -f {} \;  
    }  
    removeHeaders  
    
    쓰여 있다.처음에 나는 반신반의했지만, 사실 나는 이 스크립트를 추가하여 그것을 구축했다...

    뜻밖에!<<error type>> 사라지고 유형의 세계로!IDE에서는 코드에 색상이 있다는 것을 잊었지만 색상이 좋았습니다.
    또한 상기 스크립트는 시뮬레이터만 지원할 수 있기 때문에 실제 장치의 경우 스크립트의 Debug-iphonesimulator 부분을 Debug-iphoneos로 변경해야 한다.
    내 경우, 나는 구축할 때 아래의 스크립트를 실행했고, 디렉터리가 존재하면 둘 다 삭제했다.
    remove_header_files.rb
    #!/usr/bin/env ruby
    def remove_header_files(dir)
      return unless File.exists?(dir)
      cmd = "find #{dir}"
      opt = '-name "*.h" -exec rm -f {} \;'
      system("#{cmd} #{opt}")
    end
    
    build_dir = ENV['BUILD_ROOT']
    exit if build_dir.nil?
    
    simulator_dir = build_dir + "/Debug-iphonesimulator/"
    device_dir    = build_dir + "/Debug-iphoneos/"
    
    remove_header_files(simulator_dir)
    remove_header_files(device_dir)
    
    자동 완성과 코드 스텝 모두 작동하지 않습니다. IDE의 정의는...생각하기 시작했지만 순조롭게 고칠 수 있어서 정말 좋았어요.야, 아이디 정말 대단하다.

    좋은 웹페이지 즐겨찾기