Swift软件包管理器
Swift软件包管理器与Swift 3.0一起正式发布,是一种在macOS和Linux上创建Swift库和应用程序的新方法。 它可以帮助您管理依赖关系,并允许您轻松地构建,测试和运行Swift代码。
重要的是要注意,作为Swift 3,Swift软件包管理器仅针对主机平台进行编译。 换句话说,目前您将无法为iOS,watchOS或tvOS构建或使用软件包。
我们走吧!!
开始之前,请确保已安装Swift 3.0或更高版本。 Swift 3包含在Xcode 8.0+中,因此,如果您具有Xcode 8或更高版本,则可以开始使用。 实际上,您甚至不需要Xcode即可完成本教程的大部分内容。 您只需从swift.org安装Swift 3。
打开一个新的终端窗口,然后键入swift package
。 您将看到命令概述。 您将使用的主要命令是:
-
swift package init
以创建新包 -
swift package update
以更新swift package update
的依赖关系 -
swift package generate-xcodeproj
为您的软件包生成一个Xcode项目
要了解Swift包管理器,您将创建一个命令行应用程序,该应用程序使用一个小型库来为任何国家/地区打印表情符号标志。 您将从创建可执行程序包开始。 这些程序包是命令行应用程序。 Swift Web应用程序也属于此类。
通过在终端中运行以下命令来创建Flag
可执行程序包:
mkdir标志
cd标志
swift package init --type可执行文件
当前目录Flag
在运行swift package init
时很重要,因为它成为生成的包的名称。 您会在输出中看到一些为您创建的文件和文件夹。 花一些时间来熟悉项目结构:
-
Package.swift
具有您的程序包描述,还将具有您程序包的依赖性。 - 顾名思义,
Sources/
是所有Swift源文件的存放位置。 还为您创建了一个main.swift
文件。 这将是您的应用程序的入口点。 现在,它将向终端打印“ hello world ”。 -
Tests/
将包含您可以使用XCTest
编写的单元测试。 您将很快为代码编写测试!
返回到“终端”窗口并运行以下命令:
快速构建
这将构建软件包并在.build/debug/Flag
处创建一个可执行文件。 通过运行以下命令执行应用程序:
.build /调试/标志
您应该看到Hello, world!
打印到屏幕上。
恭喜:您已经创建并构建了您的第一个Swift包!
创建图书馆
为了完成为一个国家生成表情符号标志的实际工作,您将创建一个名为FalcoFlags
的库。 然后,您可以在Flag
应用程序中使用此库。
通过在终端中输入以下命令,将其Flag
包并创建一个库包:
光盘..
mkdir FalcoFlags
cd FalcoFlags
swift package init --type库
这次代替main.swift
,您将获得FalcoFlags.swift
。 该文件以及Sources/
文件夹中的任何其他文件将与您的库一起导入。 实际上,库和可执行文件之间的区别在于main.swift
的存在。
这次您还将获得一个示例测试。 用swift test
运行swift test
。 然后,Swift软件包管理器将编译您的库并运行测试。
在文本编辑器中打开FalcoFlags.swift
并将其内容替换为以下内容:
公共结构国家{
公开让步代码:字符串
公共初始化(代码:字符串){
self.code = code.uppercased()
}
公共var emojiFlag:字符串{
返回“ \ u {1f1f5} \ u {1f1f7}”
}
}
在这里,您可以实现一个Country
结构,该结构可以使用ISO国家/地区代码初始化。 emojiFlag
属性返回该代码的标志。 现在,您将实现最低要求以允许您编写测试。
还要注意,这里的所有内容都标记为public
,因此使用FalcoFlags模块的代码对每个成员都是可见的。 😀
现在打开FalcoFlagsTest.swift
并将其内容替换为以下内容:
在这里,您将执行三个测试。 您创建了三个不同的国家,然后断言它们具有正确的表情符号标志。
运行测试:
快速测试
您应该看到执行了三个测试,并且三个测试失败。 看来您还有一些工作要做! :]
现在您的测试失败了,是时候让它们通过了。
表情符号标志的工作方式实际上非常简单:给定国家代码(例如AT),您需要将每个字母转换为所谓的区域指示符。 这些是🇦和🇦。 将它们放在一起时,您会得到表情符号标志!
切换到FalcoFlags.swift
并将以下方法添加到Country
结构:
func RegionalIndicatorSymbol(unicodeScalar:UnicodeScalar)-> UnicodeScalar? {
让大写A = UnicodeScalar(“ A”)!
让regionIndicatorSymbolA = UnicodeScalar(“ \ u {1f1e6}”)!
让距离= unicodeScalar.value-大写A.value
返回UnicodeScalar(regionalIndicatorSymbolA.value +距离)
}
在这里,您可以利用以下事实:字母和区域指示符在Unicode表中彼此相邻,而逻辑上彼此相邻的值。 因此,如果A为65,B为66,而🇦为127462,则just仅为127463。因此要将字母P转换为区域指示符,您只需要获取A与P之间的距离,然后将其相加即可到🇵。
那是困难的部分。 现在您有了这种方法,剩下的就很容易了! 将emojiFlag
属性替换为以下内容:
公共var emojiFlag:字符串{
return code.unicodeScalars.map {String(regionalIndicatorSymbol(unicodeScalar:$ 0)!)} .joined()
}
您将国家/地区代码转换为每个字母的数组,然后将每个字母转换为其区域指示符并将它们重新组合在一起。 这会给你旗子!
再次运行测试,并观察所有三个测试通过。
创建Swift包的下一步是将您的代码提交到Git并用版本标记。 由于这是您的第一个版本,因此将其称为1.0.0
。
执行以下命令来创建您的Git存储库并标记它:
git初始化
git添加
git commit -m“初始提交”
git标签1.0.0
创建可执行文件
现在您有了表情符号标志库,您可以将其作为依赖项添加到标志可执行文件包中。
浏览回到Flag
目录并打开Package.swift
文件。 其内容如下所示:
导入PackageDescription
让包=包(
名称:“标志”
)
每个Swift软件包都有这样的描述。 您将使用的最重要的参数将是dependencies
参数。 用以下内容替换包装说明:
让包=包(
名称:“标志”,
依赖项:[
.Package(URL:“ ../FalcoFlags”,“ 1.0.0”)
]
)
在上面,您声明Flag
软件包将具有单个依赖项,其URL为../FalcoFlags
,并且版本应为1.0.0
。
该版本应使用语义版本控制。 简而言之,这意味着该版本应类似于MAJOR.MINOR.PATCH 。 MAJOR版本适用于任何向后不兼容的更改; MINOR版本适用于以向后兼容的方式进行的更改; 而PATCH版本用于错误修复。
在几乎所有情况下,您都希望通过错误修复或什至较小的改进自动将库更新到较新版本。 方便地,Swift软件包管理器允许您执行此操作。 将软件包描述更改为以下内容:
让包=包(
名称:“标志”,
依赖项:[
.Package(URL:“ ../FalcoFlags”,majorVersion:1)
]
)
Swift软件包管理器提供了更多方法来精确指定要更新到的库的确切版本。
构建包:
快速构建
您可以看到,Swift软件包管理器已根据您的依赖性要求精心选择了1.0.0版并进行了安装。 打开main.swift
文件,并将内容替换为以下代码:
进口FalcoFlags
让参数= CommandLine.arguments
如果arguments.count!= 2 {
打印(“用法:标记[iso国家/地区代码]”)
}其他{
让代码=参数[1]
让国家= Atlas.Country(代码:代码)
打印(country.emojiFlag)
}
在这里,您可以导入库,然后为给定的第一个命令行参数打印表情符号标志。 如果未提供任何参数,则输出帮助消息。
再次构建应用程序并运行它:
快速构建
./.build/debug/Flag US
现在,您应该在终端窗口中看到美国国旗!
对您的应用程序满意后,就该发布它了。 上一次构建应用程序,这次使用优化的发行版配置:
快速构建-配置发布
现在,您可以像这样运行应用程序的发行版:
./.build/release/Flag PR
现在,您可以压缩./.build/release/Flag
文件,并与您的朋友,家人或任何人共享它! :]