美文网首页程序员成长swiftiOS学习
GitHub上Swift语言开源项目(1)

GitHub上Swift语言开源项目(1)

作者: 今个儿赛太阳 | 来源:发表于2017-02-04 15:54 被阅读436次

    swift-open-project

    这里汇集了目前为止最为流行的Swift开源项目,选取SwiftGuide中的开源部分,这里将每周对项目进行总结,如果大家有推荐的可以联系thinkloki@gmail.com,或者issues,欢迎Star、Fork。感谢SwiftGuide

    <a id="open_api"></a>1. 实用类库

    以下实用类库做为快速参考,更多实用类库需求,也可以去这里(Swift toolbox is a community-supported catalog
    of iOS and OSX libraries)
    (By Adam Leonard from swiftcast.tv), 这个网站收藏了 GitHub 开源社区中优质 Swift 资源库,并提供了分类及查询服务。

    类库 相关文章 备注
    Alamofire/Alamofire Alamofire 为其著名的 AFNetworking 用 Swift 重写的网络基础库
    mattt/Euler Swift Operators 这样写是否很数学、很逻辑?∛27÷3±5, ∑[3,1,2], ~0⊻1
    mattt/Surge 基于苹果 Accelerate 高性能计算框架库,计算效率提升惊人
    mattt/Literally Swift Literal Convertibles 常用数据类型的使用及转换工具库
    • 工具类

    • Dollar:尤其在 Array 和 Dictionary 的支持上(实现类库仅一个 Dollar.swift 文件)。用过 Javascript 版的 Lo-Dash 或 underscore 就知道其实用程度。它是一套函数化编程的工具库。另一个类似的更完整的版本是 ExSwift,它的实现基于对象化扩展的。

    • ExSwift:实用类扩展库。另一个 Lo-Dash 或 underscore 的 Swift 版本实现,相对于 Dollar.swift,此版本有更完整的 API 实现。包括了对 Array, Int, String, Float, Range, Dictionary, NSArray 的扩展及其它实用方法。完全遵循面向对象的扩展原则。

    • lingoer/SwiftyJSON:这是解析 JSON 字符串封装类。实现功能与 Javascript中 的 JSON.parse 相近,使用方便。By @lingoer

    • SwiftyJSON/Alamofire-SwiftyJSON :简单地整合 Alamofire 和 SwiftyJSON 后,远程 JSON 使用方便了。

    • swift-serializeswift object serialize/deserialize of json json序列化跟反序列化

    • matthewcheok/JSONCodable:基于 Swift 2.0 新特性(Protocol Extensions and Error Handling)的JSON 解析类。

    • typelift/Basis:这个实用类库支持范围很宽范,封装主要以简化及方便调用系统API为主,使程序代码看上去更优雅。遗憾地是,目前作者并没有提供 API 文档或示例代码,对于初学者使用会额外带来一点点学习成本。

    • owensd/json-swift:功能与 Swifty 几乎一致,使用上要更方便。

    • gfx/Swift-JsonSerializer:JSON 解析又多了一种选择。

    • Ahmed-Ali/JSONExport:一款实用工 具,可以将 JSON 转换并输出为 Swift 语言类模型(也支持Android上的Java),支持简单的定制。

    • hubertr/Swell: 同时支持 Swift 和 OBJC 的 Log 实用类。喜欢 Log4j 风格的日志管理类的同学可以收入。

    • RSBarcodes_Swift:"RSBarcodes allows you to read 1D and 2D barcodes using metadata scanning capabilities introduced with iOS 7 and generate the same set of barcode images for displaying and sharing." By @yeahdongcn Swift 语言版二维码识别及生成类库。

    • SwiftP2P/SwiftSSL:常用 Digest 和 HMAC 的封装。如此封装后,使用加密算法确实很方便。很不错的一个国产"轮子"!By @你全家都快到碗里来

    • Hearst-DD/ObjectMapper:对象与 JSON 互转实用类库。需要的同学可以收一下。

    • DaveWoodCom/XCGLogger : 这是一款功能比较健全日志输出框架(Log4Swift)。之前推荐过一款类似的 hubertr/Swell,但它的功能明显没有这款强大。

    • isair/JSONHelper :又一款JSON转对象类库,算上,lingoer/SwiftyJSON,owensd/json-swift,gfx/Swift-JsonSerializer,已经有四款了。同学们根据喜好及需求,择优使用吧。

    • kylef/Stencil:通过在模板中支持 if, for, ifnot 等语法标签,实现更强大、更灵活的数据及格式输出。

    • kylef/PathKit: 简单、实用的文件路径操作类,常用功能一个也不少。

    • thoughtbot/Argo:一个带有实战说明的 JSON 解析方案及类库。

    • typelift/swiftz: 一个帮助实现函数式编程的类库,定义了一系列相应的数据结构。

    • dongri/OAuthSwift:Swift 版 OAuth(1/2) 授权类库。对于作者提供的 API,看着舒服,用着方便。

    • p2/OAuth2:独立又纯粹的 OAuth2 认证授权类库,作者所提供的示例及流程说明清晰又简洁。

    • tadija/AEXML:简单又易于使用的XML解析类。作者提供了完整的示例程序。

    • duemunk/Async:一个后台执行代码封装库,它可以让你的后台代码封装语法更简洁。

    • jquave/EasyCast:这是一个自动强制转换操作符左右类型及常用数学函数参数类型无障碍使用的类库。@onevcat几个月前也写过类似功能库 onevcat/Easy-Cal-Swift,不过,停滞更新很久了。

    • ArtSabintsev/Siren:当应用更新时,通知用户并提供 App Store 链接供用户更新的开源库。P.S. 该开发者也曾提供 Objectvie-C 语言版ArtSabintsev/Harpy

    • kishikawakatsumi/KeychainAccess:这套Keychain管理比较完整。支持本地应用,网络应用,以及与Touch ID的集成应用。

    • nori0620/SwiftFilePath:功能强大的文件及路径管理封装类库。

    • onevcat/RandomColorSwift:"刚刚开源了一个自动生成好看的颜色的 Swift 库,这是 randomColor.js 项目的 Swift 移植版本。在学习 Swift 的童鞋不妨一看,如果可以对于大家在 Swift 实际使用中的某些概念和写法有所启迪的话就再好不过了。" By @onevcat

    • beltex/SMCKit:Mac 系统管理控制器 SMC(System Management Controller)Swift 语言版封装库。通过该类库,简单的几行代码就可知 CPU 温度,风扇转速,电池状态等硬件状态或活动状态。

    • radex/SwiftyUserDefaults:轻量级数据存储类 NSUserDefaults 扩展类,它使类型数据访问和存储更为便捷、直观。

    • akosma/SwiftMoment:时间和日历函数封装库,也是经典的 moment.js 的 Swift 语言版本实现。

    • imaginary-cloud/CameraManager:相机管理封装类库。看着极好用的样子。

    • yannickl/QRCodeReader.swift:一款简单的 QR 二维码阅读组件及示例,提供前后相机切换功能。

    • aaronabentheuer/AAFaceDetection:简单、实用的面部识别封装库。虽然该技术从 iOS 5 发展,不过真正有趣的应用还不多。例如:在视频直播中可以检测观众情感(微笑或眨眼),或注意力(看着屏幕或没有)。因此,作者对其抱以很高的期待,并已经着手开发实验室类大项目。

    • zenangst/Versions:版本比较小工具。

    • NorthernRealities/Rainbow:旨在提高代码可读性及易用性的 UIColor 扩展,它使原先有限的预定义颜色(方法)选择,扩展至超过 1200 种。

    • jpotts18/swift-validator:基于规则的输入验证类库。项目良好的面向对象设计思想,使规则的扩展及自定义非常方便。P.S. 对于规则,若有更复杂的需求,则需要有更专业的规则引擎(甚至是基于自然语言的规则配置)解决方案。比如:开源的 Drools,商用的 ILOG 等。

    • nghialv/Transporter:短小、精悍、易用的多文件(并发或顺序)上传和下载传输库。还支持后台运行、传输进程跟踪、暂停/续传/取消/重试控制等功能。

    • krzyzanowskim/CryptoSwift:纯 Swift 版 Crypto 算法及相关功能类库。是一套易用、易扩展、完整、不可或缺的功能库。

    • nomothetis/SemverKit:针对符合『语义化版本规范 2.0.0』版本号的解析、比较运算类库。不仅支持 Major, Minor, Patch,还支持 Alpha 和 Beta 预发布版本,以及相应地递增运算扩展。

    • harlanhaskins/Punctual.swift:通过一系列基础数据类型扩展,使日期访问及操作更加自然语言化。若没有动态语言化地超强扩展及定制能力,如此优雅的日期操作是无法实现的。

    • ayanonagon/Parsimmon:小而美的语言学类库封装工具包。提供分词、标记词性、词形归并、朴素贝页斯分类、决策树等自然语言分析小工具。P.S. 英语分词效果好于中文,感兴趣的同学可以针对中文做一些优化开发。参考译文 NSHipster - NSLinguistic​Tagger

    • soffes/X:等不及苹果 iOS/OS X 平台统一的开发同学(Sam Soffes),启了一个项目,先将常用类库统一了。该项目刚开始,感兴趣的同学可以考虑参与其中。

    • naoty/Timepiece:直观(自然语言化)的日期类扩展。它使日期加减运算、初始设置、日期变更以及基于指定格式解析转换变得方便、易读。P.S. 相比前一段时间推荐另一个类似日期库(Punctual.swift O网页链接)功能更丰富。

    • macoscope/SwiftyStateMachine:应用好状态机,不仅提高程序可维护性,更大大增强了程序健壮性。

    • benzguo/MusicKit:一套音乐编辑及创作框架。懂音乐、玩音乐的同学值得拥有。

    • ArtSabintsev/FontBlaster:调用自定义字体封装类。很实用、很方便。

    • phimage/Prephirences:这个库可以让开发者更方便管理、读写应用的配置信息。很实用。

    • radex/SwiftyTimer:一个更友好、更简单的时间操作 NSTimer 扩展。P.S. 类似针对日期有 Punctual.swift 和 Timepiece。

    • liufan321/SwiftQRCode:简单、实用的 QR Code 扫描识别及生成库。

    • emaloney/CleanroomLogger:相当于 CocoaLumberjack 或 Log4j 的 Swift 版本,功能上甚至更强大。另外,源代码中已经内含了完整的 API 文档,使用非常方便。

    • Khan/Prototope:一款轻量的 Javascript 桥接 Swift 库。对于 JS 控,或许可以从玩这个项目开始 iOS 原型开发。

    • malcommac/SwiftDate:特别完整、强大的日期操作管理类库。它几乎涵盖了已知开源日期类库所有优秀特性。是一款值得毫不犹豫收录的类库。

    • nghialv/Future:基于微框架设计思想的异步执行及结果响应类。由示例发现,代码即简单又干净。

    • alexeyxo/protobuf-swift:Protocol Buffers 的 Swift 语言实现库。P.S. Protocol Buffers 是 Google 开源项目,主要功能是实现直接序列化结构化的对象数据,方便跨平台快速传递,开发者也可以直接修改 protobuf 中的数据。相比 XML 和 JSON,protobuf 解析更快,存储更小。

    • soffes/SyntaxKits:TextMate 风格语法高亮类库(基于 Swift 2.0)。

    • glock45/swifter:一款极其轻量的 HTTP 服务器引擎。#Swift 2#

    • andreacremaschi/GEOSwift:可轻松地处理地理对象模型和相关地形操作,是一个极其易用的地理封装库(集成 MapKit 和 Quicklook)。绝佳好轮子,不容错过。

    • 图片

    • kaishin/ImageScout:最小网络代价获得图片大小(宽和高)及类型,它对于很多场合,比如:布局和排版都有积极作用。

    • kaishin/gifu:高性能 GIF 显示类库 Swift 版本。

    • indragiek/DominantColor:采用YUV色域编码规则及K均值聚类算法提取图片代表色开源项目。很实用,很赞!

    • iSame7/Panoramic:该项目通过 Core Motion 实现了变换角度移动手机时,使图片显示产生对应位置及角度的变换。从而达到了具有现场感的图片浏览功能。

    • gavinbunney/Toucan:小而美的图片变换及处理类(支持:resize, clip, crop, scale, Ellipse Mask, Rounded Rect Mask, Image Mask)。功能略有超预期的感觉。

    • schwa/SwiftGraphics:一个易学、易用的绘图工具库封装。作者很勤劳,项目正在持续更新中。

    • contentful-labs/Concorde:一个可用于下载和解码渐进式 JPEG 的库。特定场合很有用。类库的调用方法也很自然、方便。

    • FlexMonkey/SnapSwift:一款 Snapseed 风格滤镜及参数编辑菜单。弹出菜单项后,上下、左右滑动即可调整滤镜参数。

    • kiavashfaisali/KFSwiftImageLoader:极高性能、轻量、低功耗网络图片异步加载扩展库(支持 iOS 和 WatchKit)。良好的缓存管理机制保证的作者设计初衷。P.S. 作者曾开发过 KFWatchKitAnimations:一款为  Watch 提供 60 帧动画显示效果解决方案及示例。

    • yannickl/DynamicColor:强大的颜色操作扩展类。通过该类,你可以通过扩展方法基于某个颜色得到不同深浅、饱和度、灰度、色相,以及反转后的新颜色。是不可多得的好类库。

    • Jan0707/SwiftColorArt:根据图片色系决定所在界面背景色及字体显示颜色。类库及示例代码也很简洁且易于使用。这样的项目真的带给我惊艳。何况,该开发者备注了这是他的第一个Swift项目。

    • jathu/UIImageColors:又一款根据图片获取主色、次色、背景色、详细色的类。P.S. 另一款功能相同的类是 SwiftColorArt

    • 存储

    • SQLiteDB in Swift:"This is a basic SQLite wrapper for Swift. It is very simple at the moment and does not provide any advanced functionality. Additionally, it's not pure Swift at the moment due to some difficulties in making all of the necessary sqlite C API calls from Swift."

    • Alecrim/AlecrimCoreData:更容易地访问 CoreData 对象封装类库。除了 CRUD,还提供指针定位,强大的排序、筛选,异步数据获取,以及独立线程后台存取数据。

    • Realm - a mobile database:Realm主打移动数据库。除了更轻量,甚至还可以应用到可穿戴。低耦、面向对象的设计风格也是非常亮丽的。

    • nerdyc/Squeal:一套非常完善的 SQLite 数据库访问 API,无论建库,建表,CRUD 等常用数据库操作命令都进行了很好的封装,另外,版本管理、事务管理、并发管理、命令执行及 Prepare Statement 等都提供相应支持。它是一套不可多得的SQLite管理访问库。

    • stephencelis/SQLite.swift:简单、轻量,或是使用上最 SQL 的 SQLit e封装库。

    • BjornRuud/Swiftache:Mustache 的 Swift 语言实现版本。

    • Haneke/HanekeSwift:貌似这个轻量地带缓存图片组件还不错。主要功能包括图片二级缓存、异步加载、后台执行、自动缩放等。感兴趣的同学可以试用一下。

    • SugarRecord/SugarRecord:相对于 SQL,CoreData 可以更方便、高效存储数据,而 SugarRecord 类库可以让你更方便的使用 CoreData,同时作者已经封装好 iCloud,使你的应用开发更如虎添翼。

    • michaelarmstrong/SuperRecord : Swift 版 CoreData 框架扩展类库。相对于同类型 CoreData 框架库 SugarRecord/SugarRecord,SuperRecord 要简单、轻量得多。很棒的快速开发类库。

    • aschuch/AwesomeCache:Swift 语言写的高效能缓存对象存储及管理,定义及使用简单、易于理解。支持为每个 Cache 对象设定缓存有效期。

    • daltoniam/Skeets:网络图片的获取、缓存及显示类库,支持缓存的清理及时效性管理。

    • evermeer/EVCloudKitDao:一套使用 CloudKit 简单封装库。作者还提供了示例项目及程序供开发者参考使用。

    • andrelind/Breeze:轻量 CoreData 管理封装库。支持 iCloud 。

    • arkverse/SwiftRecord:基于 Core Data 极为轻量、易用的对象持久化工具库,相当于 ActiveRecord 的 Swift 版本。

    • JohnEstropia/CoreStore:提供高可读性,一致性及安全性的 Core Data 管理类库。 其中事务管理及查询是其比较大的亮点,整套 API 功能完整,风格传统又实用。非常值得收入。

    • 远程访问

    • Minimalistic Swift HTTP request agent for iOS and OS X:一个简单、小巧、实用的 HTTP 请求 Swift 语言实现类(仅一个 Agent.swift 类)

    • lingoer/GRequest:"@李洁信:个人认为 AFNetworking 这种较重的第三方网络库将逐渐淡出舞台,而像楼主这种基于 NSURLSession 并充分利用 Swift 特性写出来的小而美的库会受到更多人的青睐!" 作者解读《GRequest for HTTP Request》

    • daltoniam/SwiftHTTP:Thin wrapper around NSURLSession in swift. Simplifies HTTP requests。感兴趣的可以看看代码,比较与 lingoer/GRequest 差别。

    • AshFurrow/Moya:如果你需要如此功能的 Swift 网络 API,可以考虑使用它。它基于 Alamofire, swfitz 等优秀开源类实现。

    • aleclarson/emitter-kit:用 EmitterKit 代替 NSNotificationCenter。这个库貌似短小、精悍、实用的样子。更重要是语法精练。

    • daltoniam/starscream:Swift 版本 WebSocket 客户端类库,支持 iOS/OS X 。 使用方便,跨平台开发不可或缺的“轮子”。

    • shuoli84/SocketIOCocoa:又一款 WebSocket 实用客户端类库,作者提供了详细的测试用例可以做为示例代码使用。

    • socketio/socket.io-client-swift:WebSockect 客户端类库。开放的通讯协议,有利于构建强大地跨平台应用。

    • marcelofabri/BigBrother:网络请求活动状态监视器类。由于 Alamofire 库并无此项特性,因此它可以做为 Alamofire 的一个扩展功能。

    • ishkawa/APIKit:为不同来源或类型 Web 服务,提供安全地可定制化网络请求 API 的基础类库。很好的面向对象设计思路实例。

    • contentful-labs/Stargate:通过 iPhone 桥接实现 Mac 与 Watch 的即时通讯。Stargate 通过封装两个优秀的基础类库 MMWormhole 和 PeerKit 实现高效的通讯应用。

    • JustHTTP/Just:小而美的 HTTP 类。功能简单、直接、完整且健壮性高。

    • CloudKitSpace/CKSIncrementalStore:基于 CloudKit 服务器实现多终端数据同步。附示例动态图。

    • 社交网络

    • lingoer/SwiftWeiboKit:"封装了整个 OAuth 2.0 的授权流程,并提供了几个简便易用的请求方法"

    • A Twitter framework for iOS & OS X written in Swift:一套很完整的 Twitter 访问框架类库,支持 iOS/OS X

    • 框架

    • robb/Cartography:Set up your Auto Layout constraints declaratively. 这是有关自动布局约束一个实用的 Swift 项目,代码看似简单清晰,不过由于设计巧妙。代码解读 By @kaiyuz

    • railsware/Sleipnir:一个基于 Swift 的行为驱动开发框架(BDD-style framework)。API 安装,示例及说明相对比较齐全。

    • Quick/Quick:另一款基于 Swift 的行为驱动开发框架。

    • inamiy/SwiftTask: 一个很标准的任务及其生命周期管理类库。作者还附上了一个基于 Alamofire 库完成的网络文件下载的任务管理示例。

    • inamiy/SwiftState:Swift 版本 State Machine,这是 SwiftTask 的姐妹篇。开发过 Workflow 类应用的同学有没有很亲切。

    • colemancda/NetworkObjects:基于Swift的轻量版HttpServer框架,可以做为iOS/OS X分布式对象的替代。可惜缺少演示或示例代码。

    • Masonry/Snappy:一个基于 AutoLayout 封装,语法简洁的轻量级布局框架。当然,用代码还是 storyboard,全凭开发者喜好。若偏好可视化自动布局,@DevTalking 的两篇译文值得参考《Swift 自适应布局教程》《为 iPhone 6 设计自适应布局》

    • jpsim/PeerKit:基于事件驱动的多端对等连接开源框架。作者提供了该组件使用案例jpsim/CardsAgainst,具体引用代码详见这里

    • Quick/Nimble:功能更强于Xcode自带测试框架(XCTest)的测试类库。

    • venmo/DVR:针对网络请求的测试框架,超实用的工具。且支持 iOS, OSX, watchOS 全平台。

    • owensd/swift-perf:针对 Swift 的性能测试方案。通过抽样场景关键代码与 C 或 Objective-C 的比较做为其测试基准。

    • nghialv/MaterialKit:Swift 版 Google Material Design 组件库。虽然个人并不推荐在 iOS 平台上使用非 iOS 风格界面,不过,对于 Android 强迫症“患者”,多一种选择也是友好的。顺带附上 Google 提供的开源Material Design 图标集,可以一起收入。

    • facebook/AsyncDisplayKit:它是由 Facebook 开发并用于其 Paper 应用的 iOS UI 框架,它主要解决问题是提供界面的高流畅性切换及更灵敏的响应,解决思路是将部分 UI 渲染及复杂计算交由独立于主线程的处理程序负责。中译教程《AsyncDisplayKit 教程 - 达到 60 FPS 的滚动帧率 By @nixzhu》,教程原文《AsyncDisplayKit Tutorial: Achieving 60 FPS scrolling》。

    • mutualmobile/MMWormhole:提供了 iOS 应用与扩展之间的消息传递,其最有价值之处当属 iPhone 与  Watch 间的消息传递,从而实现相互操控的功能。

    • Thomvis/BrightFutures:漫长或复杂计算由独立线程异步来完成。

    • Khan/Prototope:虽然看不懂这套用户交互层面的轻量级原型框架用处在哪里(哪位同学能给俺提示一下)?不过,作者将这套框架的 Swift API完整桥接为 JS 接口倒是很有意思。

    • MHaroonBaig/MotionKit:为核心运动框架(The Core Motion framework)提供友好的类库封装,以更方便使用三轴陀螺仪和加速感应器特性。

    • uber/jetstream-ios:一款 Uber 的 MVC 框架。它同时提供了多用户实时通讯支持,一旦启动 JetStream 后端服务,通过 WebSocket 协议可以分分钟建立多用户实时通讯应用。

    • jessesquires/JSQNotificationObserverKit:一款轻量、易用的通知发送及响应框架类库。作者是知名开源项目 JSQMessagesViewController(Objective-C 版即时聊天)的作者 Jesse Squires ,也是一位知名博主,收录过其文章『An analysis of sorts between Objective-C and Swift』。

    • morizotter/TouchVisualizer:实用的多点触摸可视化组件。扩展并作用于 UIWindows,结构上提供了简单地针对触摸显示定制,比如触摸点的颜色。这个组件对于需要做应用演示的同学尤其有用。

    • FutureKit/FutureKit:“是一个 100% Swift 实现的 Future/Promises 库,由 Swift Generic 带来的类型安全、由 GCD 带来的线程安全,通过 FutureKit 可以在 iOS/OS X 下灵活玩转 Future/Promises 式编程了”。推荐者:@图拉鼎

    • SwiftBond/Bond:使用简单、易于理解的对象绑定框架。比如:你可以使用代码 textField ->> label 将输入框文本映射到标签中的文字属性,当文本变化时,标签文字随动变化。 真的很方便。

    • nabilfreeman/ios-universal-webview-boilerplate: 快速封装 WebApp 到 iOS 应用,即便你毫无 Swift 编程经验。

    • FabrizioBrancati/BFKit-Swift:作者说这套工具库可以提高应用开发效率。不知效果如果?有兴趣的同学可以试用一下。

    相关文章

      网友评论

        本文标题:GitHub上Swift语言开源项目(1)

        本文链接:https://www.haomeiwen.com/subject/caajittx.html