2011-04-19 116 views
204

Jonathan在此處建議:Xcode Includes .xib files that have been deleted!清除所有目標並清空緩存將解決Xcode中的問題,包括刪除的.xib文件,但我無法找到清空緩存的方法Xcode 4.如何清空緩存並清除所有目標Xcode 4及更高版本

如何在Xcode 4中做到這一點?

+0

這是我的[殼腳本溶液] [1],其中刪除導出的數據,兩者的XCode 5和6 [1]:http://stackoverflow.com/a/27977848/1231948 – Sheamus 2015-01-16 06:47:16

回答

466

Command-Option-Shift-K清理構建文件夾。更好的是,退出Xcode並手動清除〜/ Library/Developer/Xcode/DerivedData。刪除全部其內容,因爲有一個錯誤,Xcode將運行您的項目的舊版本在那裏。 (Xcode 4.2將顯示派生數據文件夾:選擇窗口>管理器並切換到項目選項卡。單擊派生數據文件夾名稱右側的右箭頭。)

在模擬器中,選擇iOS模擬器>重置內容和設置。

最後,爲了完整起見,您可以刪除/var /文件夾中的內容;一些緩存也發生在那裏。

警告:刪除/var /文件夾可能會導致問題,您可能需要修復或重新安裝操作系統。

編輯:我剛纔得知,如果你是害怕與在/ var /文件夾搏鬥/您可以使用下面的命令,在終端更有針對性的方式來刪除:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache" 

編輯:對於某些與Swift相關的問題,我發現刪除〜/ Library/Caches/com.apple.dt.Xcode是很有用的。當你這樣做時,你會損失很多,比如下載的文檔文檔集的備用副本,但這可能是值得的。

+5

不錯,清理路徑:Library/Developer/Xcode/DerivedData +重新設置模擬器的內容和設置! – Tieme 2011-06-06 10:26:14

+9

路徑似乎在我的主目錄(注意代字號):〜/圖書館/開發人員/ Xcode/DerivedData也許這是顯而易見的,但在別人有問題... – 2011-09-16 10:32:39

+25

嘿嘿,是一個übern00b我刪除/ var/db在哪裏我發現了來自Xcode /我的項目的東西。這讓我花費了五個小時的文件系統的損壞,修復和重新安裝Lion等。請注意! :-) – 2011-11-23 19:55:53

53

Command-Option-Shift-K應該這樣做。或者,進入產品菜單,按下選項鍵,現在選項「清潔」將更改爲「清潔生成文件夾...」選擇該選項。

+0

不,太糟糕了..我只是改變並重新命名一個xib文件,並按照你所說的清理了應用程序,但它仍然正常加載沒有錯誤。 – Tieme 2011-05-04 15:50:37

+2

哇,從來沒有新的關於Mac OS X菜單的ALT鍵關鍵技巧!這確實定義了「Alt」的含義。 – trusktr 2013-08-01 19:09:28

8

我一直拔掉頭髮,因爲我認爲我有同樣的問題。在構建應用程序時,我在iPhone上沒有得到與模擬器上相同的結果。

問題是我不知何故製作了MainStoryboard.storyboard文件的本地化版本。所以當我在手機上運行應用程序時,它顯示了丹麥語版本......模擬器顯示英文版本。

是啊,我是新的! :)

+2

我有類似的問題。命令選項shift-K無效。刪除... DerivedData,沒有解決方案。原來改變頂級XIB只會改變英文版本,而我正在用荷蘭版本的XIB進行測試。嘆息...... – fishinear 2012-02-23 18:34:13

+1

另外,請注意,有些方法可以爲每種語言創建單獨文本文件的應用本地化。在這種情況下,更改.xib不會做任何事情。 – dandan78 2013-08-12 15:18:50

16

我發現除了命令+選項+ shift + K之外的另一種方式。在XCode 4.2中有一個組織者可以從右上角的圖標打開。您可以從那裏清理所有檔案並保存項目選項。這有助於我的情況(我看到在mainBundle中刪除了舊文件)。

+3

是的,這是一個更簡單的方法比清洗〜/ Library/Developer/Xcode/DerivedData手動 – Tieme 2012-04-23 15:42:41

6

要刪除所有派生數據和/var/folders中的模塊高速緩存,請使用this little ruby script

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*") 
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*") 
FileUtils.rm_rf derivedDataFolder + moduleCache 

這剛剛爲我解決了fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/錯誤。

+1

明顯的錯誤導致「致命的錯誤:格式錯誤或損壞的AST文件:'無法加載模塊」,以及由Xcode,仍然在Xcode 6.1中發生。並且退出Xcode並手動清除〜/ Library/Developer/Xcode/DerivedData的解決方案仍然可行。我不需要清理那裏的一切;只有兩個子文件夾:ModuleCache和名稱與問題項目相關的子文件夾。 – 2014-12-29 03:49:25

17

除了執行以下操作,如果您的應用程序的Storyboard文件已本地化,則可能會遇到此問題。首先,做好每一項:

  • 乾淨的構建
  • 復位模擬器
  • 重新啓動的Xcode
  • 刪除您DerivedData文件夾中〜/資源庫/開發/ Xcode中/ DerivedData
  • 刪除內容(不是整個文件夾)/var/folders
  • 重新啓動計算機

終於爲我工作的是重新生成故事板本地化文件並刪除英文本地化(由於基本語言環境是英語,因此不需要)。重新加載您的Storyboard字符串,see this answer on StackOverflow

我注意到我的故事板的非文本部分正在更新,但沒有本地化的文本。如果您的應用具有本地化功能,我會建議您進行檢查以確保您的本地化已更新(即使它們是.strings文件)。

+1

刪除/ var /文件夾的**內容**(不是整個文件夾)爲我做了!如果您正在查找/var/folders...從Finder的轉到菜單中選擇轉到文件夾,並輸入/ var /作爲文件夾的位置。 – Patricia 2014-06-19 18:04:26

+0

+1在/ var/folders指令...清理和刪除DerivedData部分工作,但那個人伎倆 – EeKay 2014-10-21 09:46:56

+1

1.清理生成 2.重置模擬器 3.重新啓動Xcode 這解決了我的問題。 – 2015-01-08 19:12:35

0

你必須小心xib文件。我嘗試了以上所有內容,沒有爲我工作。我使用xib中定義的自定義UIButtons,並意識到它可能與我已經在那裏指定了不以編程方式更改的屬性相關。如果您在那裏定義了圖片或文字,請將其刪除。當我這樣做時,我的程序變更開始生效。

4

當我打開文檔窗口時,我遇到了Xcode 5.1崩潰的問題。

我不確定它的原因,因爲我還在更新docsets,而我打開窗口。

那麼,在Xcode 5模塊目錄現在駐留在派生的數據文件夾內,我明顯的原因並沒有刪除。我刪除了〜/ Library/Developer/Xcode/DerivedData/ModuleCache〜/ Library/Preferences/com.apple.Xcode.plist的內容,然後在重新啓動Xcode之後,所有內容似乎都可以正常工作。

0

這裏是我的shell script solution,它刪除數據導出和清除項目的緩存的資產,爲的Xcode 4,5和6

有時,在導出的數據目錄簡單地調用室射頻留下了揮之不去的文件或兩個,但我的腳本循環直到所有文件都被刪除。

0

我嘗試了幾乎所有的東西,但無法幫助,什麼幫助我禁用了SIP(系統集成保護)n它的工作原理,我不知道什麼時候發生以及如何發生,但是系統文件在某處變得混亂,並導致此... 雖然有可能是禁用此風險明顯

這裏是如何

1.電源Mac上按住[命令] + [R]鍵來訪問恢復分區。

2。從恢復分區中,單擊菜單欄中的實用程序,然後選擇終端。

3.輸入下面的命令到終端,然後按Enter執行它: csrutil禁用

4.一旦該命令已執行,退出終端,並重新啓動Mac。當您重新登錄到OS X時,SIP將被禁用。

+0

的確聽起來有風險。 SIP做什麼? – Tieme 2016-10-19 13:20:00

+0

系統完整性保護可保護系統文件和被標記爲受保護的目錄。基本上爲系統增加了更多的安全性,甚至限制了sudo命令的功能 – 2016-10-19 15:04:45

0

當使用「數據模型」時,檢查員可以選擇到 一般類,對於我來說,這是因爲已有類 與現有的名稱。

Codegen:爲我解決它。

enter image description here