在Xcode 6(Beta)中,有Swift编译器-搜索路径、导入路径。它是什么作用?
只是分享我在连接数据时发现的东西。简短回答,导入搜索路径SWIFT_INCLUDE_PATHS
指定了Swift查找和导入模块的位置。
什么是模块?模块通过使用更强大、更有效的语义模型替换文本预处理器包含模型,改进了对软件库API的访问。从用户的角度来看,代码看起来只稍有不同,因为一个使用了导入声明而不是像这样的#include
预处理指令:
import std.io
这个模块最初是由苹果在2012年11月的LLVM DevMeeting上宣布的。你仍然可以在这里找到Doug Gregor的演讲(视频和PDF)。在WWDC 2013上,Semantic Import与iOS 7一起被引入,@import
就是为此而生的。因此,该模块成为了新语言Swift的一部分。模块的文档可以在这里找到。
为了尝试一下,以下是创建一个带有HTML Tidy库模块的示例应用程序项目的步骤。
在Xcode 6中创建一个Swift项目(OS X或iOS)
创建一个module.map
文件,并将其放置在一个目录中。例如:/Users/vladof/module/
module tidy [system] {
header "/usr/include/tidy/tidy.h"
header "/usr/include/tidy/buffio.h"
link "tidy"
export *
}
进入“Build Settings”,将Swift Compiler - Search Paths
> Import Paths
设置为您放置module.map
文件的目录。在我的例子中是/Users/vladof/module
。然后,您可以使用import tidy
并利用HTML Tidy库的有用API,甚至在Swift REPL中。
导入
import tidy
示例代码
var input: CString = "<node>upper case node</node>"
var tdoc: TidyDoc = tidyCreate() // 初始化“文档”
var rc: Int32 = -1
var ok = tidyOptSetBool(tdoc, TidyUpperCaseTags, yes) // 将标签转换为大写
ok = tidyOptSetBool(tdoc, TidyXmlTags, yes) // 转换为XML
if ok.value == 1 {
rc = tidyParseString(tdoc, input) // 解析输入
if rc >= 0 {
rc = tidyCleanAndRepair(tdoc) // 整理它
}
if rc >= 0 {
rc = tidySaveStdout(tdoc) // 在控制台上漂亮地打印
}
}
打印
<NODE>upper case node</NODE>
此外,我已经尝试了curl
模块。实际上,在我的测试中,一些API没有被导入,例如curl_easy_setopt()
,希望它们能在不久的将来赶上。但我相信这为Swift开发者打开了一扇门。