簡體   English   中英

Xcode 9 自動完成不工作 100% - 部分工作

[英]Xcode 9 Autocomplete Not Working 100% - Partially Working

今天早上,Xcode 9.0 (9A235) 顯示了一個新的/奇怪的自動完成框,它與以前完全不同。 如何獲得完整的自動完成框,以便自動完成看起來像通常那樣?

在此處輸入圖片說明

嘗試:

  1. 轉到Xcode > 首選項 > 文本編輯
  2. 在代碼完成下 - 取消選中“鍵入時建議完成”
  3. 退出 Xcode,然后重新啟動 Xcode。
  4. 再次轉到Xcode > Preferences > Text Editing
  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

如果您跳過了第一步:
刪除派生數據
Xcode Preferences -> Locations ->
箭頭符號將您帶到DerrivedData -> 刪除文件夾


#3 **檢查您的構建階段的編譯源。**

項目中的每個.swift.m文件都應該在這個列表中,否則它不會在這些文件中自動完成。


#4 **優化您的編輯器:**

對每個類屬性和函數使用 fileprivate* 可以減少每個項目的編譯器工作范圍。

編寫模塊化/OOP 代碼,以便編譯器讀取更少的代碼。

當結果是復雜計算時避免使用類型推斷,並嘗試將復雜計算分解為let this = smallerOperation語句

* 在 Swift 4 中 private 變得比 fileprivate 更嚴格


在 Xcode 12 中,需要刪除派生數據的頻率有了顯着改進(盡管凍結增加了)。

Xcode 版本 11.0 (11A420a)

我已經嘗試過Lal Krishna為 Xcode V11.0 提供的解決方案。 它工作了幾次,但后來我沒有結果。

我找到了一種解決方案。 您必須刪除兩個文件:

  1. 庫/開發人員/Xcode/派生數據(如前所述)
  2. 庫/開發人員/Xcode/UserData/IDEEditorInteractivityHistory

該解決方案現在可以幫助我。 可能對其他人有用😉

當文件不是目標的成員時,可能會發生這種情況。 打開自動完成功能不工作的文件,並在 Xcode 的右上角顯示“Utilities”選項卡(下面屏幕截圖中的藍色)。 Xcode 右上角視圖按鈕的屏幕截圖

Xcode Target Membership 選項的屏幕截圖

確保您的目標(通常是您的應用程序名稱)已選中。 自動完成應該幾乎立即工作,而無需重新啟動 Xcode、清理或刪除派生數據。

如果已選中,請確保取消選中並重新選中。 對我來說,它成功了。

我正在使用Xcode 10.2 ,但我遇到了同樣的問題。

axel 的這個答案幫助我解決了這個問題。

無論如何,我要多描述一點:

  1. 單擊鼠標右鍵轉到YourProject.xcodeproj並打開Show Package Contents
  2. 轉到xcuserdata並刪除您的youruser.xcuserdatad

如果您還有xcworkspace (如果您已經安裝了任何Pod ),則執行第 3 步和第 4 步,如果沒有,則跳過第 3 步和第 4 步:

  1. 單擊鼠標右鍵轉到YourProject.xcworkspace並打開Show Package Contents
  2. 轉到xcuserdata並刪除您的youruser.xcuserdatad

  3. 退出 Xcode

  4. 使用終端刪除派生數據

rm -rf ~/Library/Developer/Xcode/DerivedData

  1. 打開Xcode並檢查它是否有效。

在此處輸入圖片說明

如果您對文件進行了冗余命名,也會發生這種情況。 例如,

Data.swift

Data.swift

這是一些解決方法,但有效。

  1. 清理項目... Command + Shift + K

  2. 清理構建文件夾... Command + Shift + Options(Alt) + K

  3. 刪除項目的派生數據...這可以在此鏈接的幫助下完成:

    如何刪除 Xcode 9 中的派生數據?

  4. 關閉 XCode。

  5. 重新打開 XCode(讓索引完成)並構建項目... Command + B

一旦完成構建,建議就會回來。 我已經試過兩次了。

更新:

有時問題可能就像重復文件名一樣簡單。 仔細檢查您添加的任何新文件名是否與舊文件沖突。

在 Xcode 11.4 中,即使您將現有文件移動到另一個組,建議也會消失。 這可以通過重新啟動 Xcode 來解決。

從測試目標中刪除文件解決了我的問題。

經過長時間的搜索,我終於為我解決了這個問題。 在 Xcode > Preferences > Text Editing 中,在“Code Completion”中,出於某種原因,我選中了“使用 Escape 鍵顯示完成建議”。 一旦我取消選中這個框,自動完成就像一個魅力,甚至不需要重新啟動 Xcode! (Xcode 10)

請嘗試這樣做:

選擇文件>> 檢查文件是否已添加到 UITesting 或 UnitTesting 目標(文件檢查器 -> 目標成員資格) 如果是這樣,請取消選中這兩個並確保只選擇了項目目標。 然后構建並嘗試自動完成是否正常工作。

這對我有用。 希望它可以幫助某人。

對於 Xcode 11.4 (11E146)

文件夾名稱中的反斜杠破壞了自動完成功能,如果是這種情況,請將其刪除並重新構建。

在此處輸入圖片說明

我在這里添加了我的項目中正在發生的事情,以防萬一它可以幫助其他人......我有 2 個同名的文件,但我沒有意識到。

只是失去了一天試圖解決的Xcode的自動完成噩夢(9.2)。 刪除派生數據似乎很簡單,然后事情又恢復了。 重新啟動等和其他建議的巫毒教未能產生影響。

我放棄並從 Jet Brains 下載了 30 天的 AppCode 試用版。 自動完成在那里運行良好,這可能是巧合,但它隨后在我的 Xcode 項目中再次開始工作。 不能保證它會繼續工作......

在我的情況下,它似乎是特定於文件的(Xcode 9.2)對我來說修復是:

  1. 刪除問題文件(刪除參考)
  2. 清潔和構建
  3. 將文件添加回項目(我沒有檢查測試目標)
  4. 重新構建

終於在嘗試了 3 個小時之后 - 自動完成功能正常工作。

問題主要是因為項目導航器中缺少某些文件的位置(構建錯誤)

  1. 按 command+1 打開Project Navigator窗格
  2. 檢查是否有任何丟失的文件

或者你可以:

  1. 刪除派生數據(command+shift+K)
  2. 清理構建文件夾(command+shift+option+K)
  3. 再次按 build (command+B)
  4. 您應該會看到 Xcode 無法找到某些阻止構建工具處理自動完成的文件的構建錯誤。
  5. 更正並修復您看到的任何丟失的文件。

希望這有幫助

使用Command + B
Command + R構建運行項目
Xcode 有時會搞砸 ;)

Xcode 11.3,macOS Catalina

進程 parsecd 實現了 100% 的 CPU,所以殺死它對我有幫助

轉到目錄下並刪除其上的所有文件夾。

{Your User}/Library/Developer/Xcode/DeriveData

它對我有用。

對我來說,它發生在我的測試文件中,因為出於某種原因它不是目標的一部分。 設置它的目標成員資格解決了這個問題。

對我來說,當我放棄一個文件的所有更改(在源代碼管理> 提交下)時,就會出現問題,這實際上刪除了該文件。 這就是我想要的,我認為該文件及其所有引用也會被刪除。

但是,項目導航器中仍然存在對該文件的引用(以紅色顯示)。 刪除項目導航器中的(現在不存在的)文件神奇地恢復了自動完成功能。

沒有多少清理、刪除派生數據等幫助。 當我嘗試構建我的項目時,我才意識到刪除的文件仍在顯示,這當然失敗了,因為它找不到該文件。

希望這能幫助某人節省 30 分鍾 :)

  1. 檢查您在 Xcode -> Preferences -> Text Editing 中Suggest completions while typing是否選擇了Suggest completions while typing補全
  2. 在 Finder 中導航到 user->Library->Developer->Xcode->DerivedData 並刪除 DerivedData 文件夾

我的案例可能看起來太具體而無濟於事,但它可能會讓某人了解如何解決損壞的自動完成。 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)
 }

我希望根據用戶首選項向左、向右或向中間設置文本視圖的動畫。 newPosition是文本動畫的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
 }

我想在一堆解決方案中再添加一個,因為它是唯一對我有用的解決方案,在這里找不到。

Xcode 通常為每個項目提供兩個默認的構建配置。 ReleaseDebug 我有一個額外的單元測試,稱為Testing 在 Xcode 10.1、10.2、10.3 和 11 beta 中,新的構建系統似乎不喜歡它,只有在您使用ReleaseDebug才會自動完成。 任何自定義構建配置都會破壞帶有單元測試的混合(swift + objc)項目中的自動完成。

我在 Xcode 11.3.1 中遇到了同樣的問題。 在我的情況下,問題是由於重復的文件名/已刪除的文件名造成的。 最好運行一次應用程序並檢查是否有任何已刪除的文件/類,以便您收到語法錯誤。

這個鏈接幫助了我。 打開構建設置並填充框架搜索路徑。 見下圖。

在此處輸入圖片說明

構建錯誤可能會破壞 Xcode 中的自動完成功能。

我遇到了 100% 無法自動完成的問題,這里寫的都沒有幫助。 我注意到的一件事 - 在將一些實體添加到 .xcdatamodel 文件后立即被破壞,默認情況下具有代碼生成類定義。

因此,即使沒有重新啟動 xcode,在使用舊式 codegen none(當然還有生成類)時我也不會立即解決問題。

在此處輸入圖片說明

使用 Xcode 11.1,僅執行Clean Build Folder或刪除派生數據不足以修復自動完成。

只有在重新啟動我的 Mac 后,一切才恢復正常

如果您遇到奇怪的完成/自動完成/智能感知(不顯示委托和數據源協議方法等默認內容)的問題,只需更改您的目標(例如從模擬器 iPhone 8 到真實設備),構建項目並切換回您的原始目標.

與 Interface Builder(故事板)的問題類似,當您選擇視圖的任何部分時,它不顯示任何內容,而只顯示“未選擇任何內容”。 只需切換到其他 Xib/Storyboard(甚至創建新的),檢查它是否在那里工作並切換回來。

這些解決方法在這兩種情況下都對我有用(在 Xcode 10.2.1 上的一個項目中,在一天內遇到了這兩個問題)。 從我在互聯網論壇上看到的情況來看,這些錯誤似乎是自 Xcode 6.x 左右以來從未修復過的。

干杯!

今天早上,Xcode 9.0(9A235)顯示了一個新的/奇怪的“自動完成”框,它與以前完全不同。 如何獲得完整的自動完成框,以使自動完成看起來像通常一樣?

在此處輸入圖片說明

這對我有用:

  1. 將所有項目文件的備份保存在某處。

  2. 刪除項目。

  3. 創建一個新項目並添加所有文件。

  4. 它自動地工作。

Xcode 11.3 也有同樣的問題。 以上沒有任何幫助,結果是我有構建錯誤。 只需修復構建錯誤,自動完成功能就會再次運行。

使用 swiftUI 嘗試提取您的子視圖,否則自動完成將不起作用。

如果您有很多未提取的子視圖,自動完成將停止工作

在右側的“文件檢查器”中,嘗試關閉“目標成員資格”。 如果您正在創建一個多平台項目,請嘗試切換 (macOS)。

自動完成應立即工作,無需重新啟動。

只有當文件的源代碼類型未設置為Objective-C時,或者使用另一種語言編寫時(即使只有一小段C語言),自動完成功能也無法正常工作。

如果您正在編輯的行上或上方存在語法錯誤,則該命令也將不起作用。 在方法調用末尾缺少花括號(即使它不在您正在編輯的文件中)也將阻止自動完成獲取必要的上下文以建議相關命令。 即使文件不是您正在使用的文件,丟失的文件(在文件列表中以紅色顯示)也會丟失。

在執行此操作時,請嘗試構建以查找錯誤,然后進行修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM