2014-12-03 30 views
2

任何人在Xcode中使用默認代碼片段? 那裏有太多無用的代碼片段,所以我甚至不想在那裏創建我的片段。 因此在ST上尋找答案,但他們沒有多大幫助。刪除Xcode 6中的默認代碼片段

是否有任何改善,所以我可以刪除代碼片斷在Xcode 6?

對於進一步的問題,我可以導入或導出定製的片段,這樣我就可以在不同的電腦上使用它們?

非常感謝,

+0

你是什麼意思默認代碼片段?你在談論viewdidload viewwillappear方法嗎? init方法對於創建對象是必需的,其餘兩種方法可以在不需要的情況下移除。 – iOSdev 2014-12-03 05:32:22

回答

2

答案是:YES,

由用戶生成的這些代碼片段保存在路徑

~/Library/Developer/Xcode/UserData/CodeSnippets

你可以簡單地傳遞他們周圍保存和恢復他們。所以你可以與他人分享,另一方面,在其他Mac上使用它們。

+1

問題不在於在哪裏找到用戶創建的片段,而是標準片段。 – Damasio 2015-12-03 12:29:15

2

有一個叫SnippetEdit

它可以將你所有的Xcode默認片段用戶片段的應用程序。 我和Xcode 7測試版試了一下,Xcode的6

你不應該在Xcode中,當他們默認片段刪除用戶片段。由於Xcode的只是重新創建它們:-(。

至少你能把我只使用快速的片段,並也想刪除所有這些C改變他們的方式。改變冠軍和內容。

+0

偉大的小工具。感謝分享@iGodric – Alix 2017-05-04 14:55:42

2

。,C++和objC片段在文件「/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/Current/Resources/SystemCodeSnippets.codesnippets」 A清理似乎工作:我只有三個留在迅速片段代碼段庫面板,過濾和這些片段的選擇工作,但打回車鍵,而在片段的過濾器領域。 所以我恢復了舊文件,並再次有完整的列表時的Xcode崩潰了好幾次。

在這裏通過在stackoverflow中搜索確信我不要刪除默認片段,而是將它們存儲爲具有相同ID和更高版本號的用戶片段。

作爲一個小的編程任務我創建了一個OS X的Projekt並用下面的代碼就在產生AppDelegate.swift的在applicationDidFinishLaunching:

func applicationDidFinishLaunching(aNotification: NSNotification) { 
    let filepathOfSystemSnippets = "/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/Current/Resources/SystemCodeSnippets.codesnippets" 

    let folderForUserSnippets = "\(NSHomeDirectory())/Library/Developer/Xcode/UserData/CodeSnippets" 

    print("reading \(filepathOfSystemSnippets)") 
    let arrayOfDicts = NSMutableArray(contentsOfFile: filepathOfSystemSnippets) 
    //  print("arry has \(arrayOfDicts?.count) entries") 
    for (ix, dict) in arrayOfDicts!.enumerate() { 
     let userDict = NSMutableDictionary(dictionary: dict as! [NSObject : AnyObject]) 
     userDict["IDECodeSnippetVersion"] = 2 
     userDict["IDECodeSnippetTitle"] = "free user snippet \(ix) " 
     userDict["IDECodeSnippetSummary"] = "" 
     userDict["IDECodeSnippetContents"] = "" 
     userDict["IDECodeSnippetLanguage"] = "Xcode.SourceCodeLanguage.Swift" 
     userDict["IDECodeSnippetCompletionPrefix"] = "" 
     userDict["IDECodeSnippetUserSnippet"] = true 

     if let id = dict["IDECodeSnippetIdentifier"] as? String { 
      let pathOfUserSnippet = "\(folderForUserSnippets)/\(id).codesnippet" 
      if NSFileManager.defaultManager().fileExistsAtPath(pathOfUserSnippet){ 
       print("snippet with id \(id) already exists in \(pathOfUserSnippet) -> don't write.") 
      } else { 
       userDict.writeToFile(pathOfUserSnippet, atomically: false) 
       //     print("write snippet with id \(id) in \(pathOfUserSnippet)") 
      } 
     } 
    } 

} 

我用我的答案中發現的硬編碼文件夾名稱。所以如果他們在未來版本的Xcode中改變,可能需要改變。

運行該應用程序後,用戶片段文件夾中將填充大約60個已清理的片段,並準備好填充自己的源代碼。

4

是的,你可以刪除默認片段。 由於片段是在路徑中plist文件保存在XML

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets

可以在TextEdit創建一個空的片段文件與下面的代碼:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 

<plist version="1.0"> 
    <array></array> 
</plist> 

並將其保存爲SystemCodeSnippets.codesnippets。 將其替換爲上述文件夾中的文件,並且不再有默認系統片段。

+1

很好的回答!提示:如果您在Applications文件夾中沒有在Xcode下看到文件夾結構,那麼只需右鍵單擊Xco​​de並選擇「顯示包裝內容」。仍然適用於Xcode 8. – 2016-09-25 18:08:38

+1

但請注意,Xcode更新可以重置plist gile,並且您必須重新執行一次,或者直接寫入複製文件腳本 – Binarian 2016-09-25 18:56:50