2015年12月3日,Apple正式开源了Swift编程语言。 通过开源整个编程语言,Apple现在允许来自世界各地的开发人员为该语言做出贡献并协助其开发和发展。 除此之外,Swift编程语言现在可以在Apple平台之外的环境中使用,例如Linux。

在本文中,我将向您介绍一些利用Swift的最受欢迎和最有趣的项目,这些项目将随着时间的推移与语言本身一起发展。

1.基础

如果您之前曾经做过任何iOS编程,尤其是使用Objective-C,则您可能熟悉NSDate , NSArray , NSString和NSURL类的类。 这些类都是Foundation框架的一部分,该框架可在每个Apple平台(iOS,OS X,tvOS和watchOS)上使用。

但是,Apple也将Foundation API提供的基本功能重新实现为Swift Core Library,以便跨平台移植。 可以在GitHub上的 Apple的swift-corelibs-foundation存储库中找到该项目。

许多其他开发人员正在积极努力,以可移植的跨平台方式将Foundation API引入Swift。 这些项目中最受欢迎的是SwiftFoundation ,在撰写本文时,它与Apple的实现有许多关键区别。

更多功能

它提供更多功能。 正如该项目的自述文件所述,Apple Foundation项目中的许多方法都标有NSUnimplemented() ,这意味着当前仅提供基本功能。

可移植性

从一开始,它的设计便考虑了可移植性。 与Apple的Foundation核心库不同,SwiftFoundation不依赖于用C编写的CoreFoundation API。这使SwiftFoundation将来可以更轻松地支持更大范围的平台。

面向协议

SwiftFoundation完全使用面向协议的结构而不是更传统的面向对象的编程风格进行设计和开发。 这样做提供了一系列好处,您可以在本教程中了解更多信息。

更重要的是,它使拥有20多年历史的Foundation API完全现代化。 Apple最终可以使用其Foundation核心库执行类似的操作,但是其存储库的README说明以下内容。

在第一年,我们不打算对库进行主要的API更改。 我们认为这将妨碍[Apple平台之外的可移植性]的主要目标。

这两个项目都正在积极地进行更新,并且由于它们允许基本功能(如联网,获取/操纵日期/时间以及在Swift语言支持的任何平台上的持久本地存储)而在Swift开发的未来中必将变得至关重要。

2.其他核心图书馆

除了Foundation之外,Apple还从头开始重新开发要在其他平台上与Swift一起使用的其他两个主要库: XCTest和libdispatch (也称为Grand Central Dispatch )。 尽管这些项目不如Foundation受欢迎或具有相同的规模,但在Swift开发方面它们仍然非常重要。

XCTest项目旨在允许开发人员为其Swift代码创建单元测试。 如果您不熟悉单元测试,请查看本文以了解有关它们的更多信息。 尽管在初期阶段仅支持基本测试,但随着时间的推移,XCTest项目对于所有Swift开发人员在测试和调试代码时都将变得非常重要。

当在支持的硬件上运行时,libdispatch项目允许并发(多线程)工作流。 这对于网络请求等操作尤其重要,这样主线程就不会被其他操作阻塞。

尽管这两个仓库都是由Apple拥有和维护的,就像Swift一样,但它们都是开源的,以鼓励开发人员投入。 我鼓励您看一下它们,即使只看一下API的实现也没用。 您可以从浏览源代码中学到很多东西。

3.

Swift开源最令人兴奋的可能性之一就是能够将它用作服务器后端和网站的主要编程语言。 尽管HTML和CSS仍然是向用户提供内容方面的网络标准,但一旦Swift及其库足够成熟且功能正常,Swift几乎可以用于目前其他任何语言(例如PHP和JavaScript,被使用。

对于Cocoa开发人员而言,这尤其令人兴奋,因为他们通过使用Swift进行前端开发已经获得的技能和知识将极大地帮助他们进行后端开发。

有许多项目正在努力将Swift引入网络,包括Vapor , Zewo和Caramel 。 但是,这些项目中最先进且功能最丰富的项目是Perfect 。

Perfect包含许多不同的Swift组件,每个组件都有其独特的用途。

PerfectLib包含客户端和服务器所需的网络API和实用程序,包括简化的HTTP请求处理,JSON解析和其他数据管理。

Perfect Server在服务器端运行,并处理接受连接,处理请求和返回响应。 使用Perfect Server的服务器可以使用FastCGI或独立的HTTP。

各种连接器 ,允许服务器与其他的API,包括扩展它的功能和工作mod_perfect用于与Apache 2.4和FastCGI连接的MySQL , PostgreSQL的 ,和MongoDB的与这些类型的数据库工作。

组合使用时,这些组件将提供功能齐全的Web服务器,其工作原理与由PHP或JavaScript支持的传统服务器完全相同。 运行Swift的Web服务器的可能性非常令人兴奋,像Perfect这样的项目为Swift几乎可以用于项目的每个组件铺平了道路。

4.

如果您看一下本文前面提到的存储库,您会发现其中的一些存储库在其根目录中有一个名为Package.swift的文件。 包含此文件的项目会这样做,以便与Swift Package Manager一起使用 。

Swift Package Manager是一个依赖关系管理系统,类似于CocoaPods和Carthage ,使开发人员可以链接到第三方库并在自己的项目中使用它们。

正在开发此软件包管理器,以便任何使用Swift的平台都可以完全相同的方式链接和导入代码,而不必依赖于特定于平台的解决方案。 Swift Package Manager仍处于早期开发阶段,许多规格可能会发生变化。 但它的目标是与Swift 3一起定稿并发布。

如果您想仔细看一下这个项目并学习如何在自己的代码中使用它,那么我建议您访问Swift.org上的项目页面或GitHub上的存储库。

5.杂项实用程序

除了前面提到的开源Swift项目之外,还有许多其他有趣且独特的项目。

XCGlogger

该项目旨在记录。 它使开发人员可以在系统控制台上打印更多细节,而不必编写一堆额外的代码。 使用此日志记录实用程序,您可以自动记录各种属性,包括线程名称,源代码文件名,行号和当前作用域方法。

雨燕线

该项目的目标是使用Swift创建命令行应用程序。 这些应用程序以常规键盘输入和多项选择的形式支持用户交互。

Swiftline在教育环境中特别有用,因为学生可以使用它来开发功能齐全的交互式应用程序,而不必担心任何类型的用户界面。

迅捷算法俱乐部

该存储库包含各种有用的算法,所有这些算法都可以在Swift代码中使用。 这包括固定大小的数组,哈希表和改组之类的东西。 该存储库包含所有当前支持的算法的完整列表。

迅捷AI

Swift AI是一个专注于机器学习的人工智能项目。 存储库中包含的示例项目显示了AI系统如何学习复制基本正弦函数。

请注意,由于该项目依赖于Apple的Accelerate框架 ,因此目前仅在iOS和OS X上受支持,从而可以在执行大型计算时提高性能。

结论

有许多新的令人兴奋的开源Swift项目,随着时间的推移,这些项目将发展并影响许多开发人员的职业。 如您所见,通过开源Swift,Apple不仅通过社区的贡献使语言变得更好,而且在为非Apple平台开发时也变得有用。

我鼓励您检查本文中提到的一些项目,并查看它们正在努力实现的目标。 如果您想查看更多项目,那么我建议浏览GitHub以找到最受欢迎和当前趋势的Swift存储库。

与往常一样,在下面的评论中留下您的评论和反馈。

翻译自: https://code.tutsplus.com/tutorials/popular-open-source-projects-for-swift-development--cms-25990