0%

Xcode Code Snippets 分析

反馈请联系hertz@hertzwang.com,谢谢

源于 qcloud-sdk-ios 上的代码块描述,应用实例 Fast Code

文件内容

.codesnippet结尾的xml文件,存放在~/Library/Developer/Xcode/UserData/CodeSnippets文件夹,完整示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDECodeSnippetCompletionPrefix</key>
<string>代码块前缀</string>
<key>IDECodeSnippetCompletionScopes</key>
<array>
<string>代码块作用域</string>
</array>
<key>IDECodeSnippetContents</key>
<string>代码块内容</string>
<key>IDECodeSnippetIdentifier</key>
<string>代码块唯一标识符</string>
<key>IDECodeSnippetLanguage</key>
<string>Xcode.SourceCodeLanguage.Objective-C</string>
<key>IDECodeSnippetSummary</key>
<string>代码块概要</string>
<key>IDECodeSnippetTitle</key>
<string>代码块标题</string>
<key>IDECodeSnippetUserSnippet</key>
<true/>
<key>IDECodeSnippetVersion</key>
<integer>2</integer>
</dict>
</plist>

分析

总结

Xcode中可修改条目有七项,分别是Title、Summary、Content、Language、Platform、Completion和Availability,下载后文件与Xcode生成的文件做对比差异如下:

  1. 代码块前缀 IDECodeSnippetCompletionPrefix 对应的 string
  2. 代码块作用域 IDECodeSnippetCompletionScopes 对应的 array,目前已知有 All、CodeBlock
  3. 代码块内容 IDECodeSnippetContents 对应的 string,其中填充部份以 <# 开头并以 #> 结尾,Xcode中是 <#填充部分#>
  4. 代码块唯一标识符 IDECodeSnippetIdentifier 对应的 string,格式为 8位-4位-4位-4位-12位 的16进制,如:FF167DB4-0C2D-4F6D-9A2B-0C0785239FFB
  5. 代码块概要 IDECodeSnippetSummary 对应的string,无内容可为空字符串
  6. 代码块标题 IDECodeSnippetTitle 对应的 string

代码块作用域

由于 IDECodeSnippetCompletionScopes 的值是 Array,所以可以设置多个,但要注意是 All 或多个

Availability Code
All Scopes All
Class Implementation ClassImplementation
Class Interface Methods ClassInterfaceMethods
Class Interface Variables ClassInterfaceVariables
Code Expression CodeExpression
Function or Method CodeBlock
Preprocessor Directive Preprocessor
String or Comment StringOrComment
Top Level TopLevel