十个Swift的iOS开源项目分享

如果你从事的是 iOS开发的工作,那么使用 Swift语言也许会是一个不错的选择,相较Objective-C,Swift更易学习也更加强大。不过,纵观Swift教程,你会发现讲解的比较广 泛,且并未深入涉及代码学习和实现等。这里,为了让大家能够进一步了解Swift及让开发工作更容易上手,选出了这十个不错的开源项目,希望可以为iOS 开发者提供帮助。推荐学习Swift从零基础到实战教程。

1、Alamofire

Alamofire
是一个使用Swift语言编写的HTTP网络库,支持各种 HTTP
Method、JSON、文件上传、文件下载和多种认证方法,可以很简单的用于异步网络通信和业务流程链反应。使用要求:iOS 7.0+/Mac OS
X 10.9+、Xcode 6.0。
代码示例:
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.response { (request, response, data, error) in
println(request)
println(response)
println(error)
}
2、Surge
Surge是一个基于Accelerate框架和C语言开发,用于进行矩阵运算、数学信号处理和图像处理的API。换句话说,就是可以非常快速的处理数学、语音和图像信号。
代码示例:
计算总和[Double]
import Surge
let n = [1.0, 2.0, 3.0, 4.0, 5.0]
let sum = Surge.sum(n) // 15.0
计算乘积[Double]s
import Surge
let a = [1.0, 3.0, 5.0, 7.0]
let b = [2.0, 4.0, 6.0, 8.0]
let product = Surge.mul(a, b) // [2.0, 12.0, 30.0, 56.0]



3、SwiftyJSON
Swift对于类型有着非常严格的控制,所以在处理JSON时会很麻烦。而SwiftyJSON就是让在Swift语言中处理JSON数据变得更简单的开源类库。使用要求:iOS 7.0+/Mac OS X 10.9+、Xcode 6.0。
代码示例:
//If json is .Dictionary
for (key: String, subJson: JSON) in json {
//Do something you want
}
//If json is .Array
//The `index` is 0..
for (index: String, subJson: JSON) in json {
//Do something you want
}
4、Dollar.swift
Dollar是一个Swift库,无需扩展任何内置对象就为Swift语言提供有效的函数式编程辅助方法,类似于Lo-Dash或JavaScript中的Underscore。而Cent则是通过扩展功能来扩展Swift中的特定对象类型。
代码示例:
$.at(["ant", "bat", "cat", "dog", "egg"], indexes: 0, 2, 4)
=> ["ant", "cat", "egg"]
Cent示例:Date
let date = Date.from(2014, 1, 1)
=> "Jan 1, 2014, 12:00 AM"
let parsedDate = Date.parse("2014-01-01", format: "yyyy-MM-dd")
=> "Jan 1, 2014, 12:00 AM"
let currentUnix = Date.unix()
=> 1,412,829,874.07114
var otherNSDate = Date()
let otherUnix = Date.unix(otherDate)
=> 1,412,829,938.92399



5、ExSwift
ExSwift是一组Swift语言对标准类型和类的扩展。
代码示例:
each (eachFunction each: (Key, Value) -> ())
let dictionary = ["A": 1, "B": 2, "C": 3]
dictionary.each { key, value in println(key, value) }
/* Prints → */
// (A, 1)
// (B, 2)
// (C, 3)
6、SwiftTask
SwiftTask是使用Swift语言编写的状态机,拥有许多和他人创建的业务工作流任务的用例,综合了Promise + progress + pause + cancel,使用SwiftState(状态机)。
代码示例:
基本定义
// define task
let task = Task { (progress, fulfill, reject, configure) in
player.doSomethingWithProgress({ (progressValue: Float) in
progress(progressValue) // optional
}, completion: { (value: NSData?, error: NSError?) in
if error == nil {
fulfill("OK")
}
else {
reject(error)
}
})
// pause/resume/cancel configuration (optional)
configure.pause = { [weak player] in
if let p = player { p.pause() }
}
configure.resume = { [weak player] in
if let p = player { p.resume() }
}
configure.cancel = { [weak player] in
if let p = player { p.cancel() }
}
}
// set then & catch
task.then { (value: String) -> Void in
// do something with fulfilled value
}.catch { (error: NSError?, isCancelled: Bool) -> Void in
// do something with rejected error
}
// you can call configured operations outside of Task-definition
task.pause()
task.resume()
task.cancel()



7、HanekeSwift
Haneke
是一款使用Swift语言编写的,轻量级的iOS通用缓存。它为UIImage、NSData、JSON和String提供记忆和LRU磁盘缓存或其他像
数据可以读取或写入的任何其他类型。特别地是,Haneke更擅长处理图像。使用要求:iOS 8.0+、Xcode 6.0。
代码示例:
还可创建自己的缓存
let cache = Haneke.sharedDataCache
cache.set(value: data, key: "funny-games.mp4")
// Eventually...
cache.fetch(key: "funny-games.mp4").onSuccess { data in
// Do something with data
}
8、Cartography
Cartography是用来声明Swift中的Auto Layout,无需输入任何stringly就可设置自己Auto Layout的约束声明。
代码示例:
如何使用
layout(view1, view2) { view1, view2 in
view1.width   == (view.superview!.width - 50) * 0.5
view2.width   == view1.width - 50
view1.height  == 40
view2.height  == view1.height
view1.centerX == view.superview!.centerX
view2.centerX == view1.centerX
view1.top >= view.superview!.top + 20
view2.top == view1.bottom + 20
}
9、Sleipnir
Sleipnir是一款适用于Swift的BDD风格框架,不依赖NSObject,是纯粹的Swift测试框架,不使用XCTest。同时,Sleipnir还具有很好的命令行输出和支持自定义测试报告及随机测试调用等特性。
代码示例:
class SomeSpec : SleipnirSpec {
let someSpec : () = describe("Some spec") {
var someArray: [Int]?
beforeEach {
someArray = [1, 2, 3]
}
afterEach {
someArray = nil
}
it("should pass") {
expect(someArray).toNot(beNil())
expect(someArray).to(contain(3))
}
}
}



10、Quick
Quick是一个行为驱动的Swift和Objective-C开发测试框架,CSDN也有相关文章介绍过。
代码示例:
使用的例子
// Swift
import Quick
import Nimble
class DolphinSpec: QuickSpec {
override func spec() {
it("is friendly") {
expect(Dolphin().isFriendly).to(beTruthy())
}
it("is smart") {
expect(Dolphin().isSmart).to(beTruthy())
}
}
}
// Objective-C
#import
#import
QuickSpecBegin(DolphinSpec)
it(@"is friendly", ^{
expect(@([[Dolphin new] isFriendly])).to(beTruthy());
});
it(@"is smart", ^{
expect(@([[Dolphin new] isSmart])).to(beTruthy());
});

QuickSpecEnd

还有更多编程语言教程集合相关知识登录e良师益友网。

时间: 2024-09-30 06:00:59

十个Swift的iOS开源项目分享的相关文章

推荐十个Swift的iOS开源项目

如果你从事的是 iOS开发的工作,那么使用 Swift语言也许会是一个不错的选择,相较Objective-C,Swift更易学习也更加强大.不过,纵观Swift教程,你会发现讲解的比较广 泛,且并未深入涉及代码学习和实现等.这里,为了让大家能够进一步了解Swift及让开发工作更容易上手,选出了这十个不错的开源项目,希望可以为iOS 开发者提供帮助.推荐学习Swift从零基础到实战教程. 1.Alamofire Alamofire 是一个使用Swift语言编写的HTTP网络库,支持各种 HTTP

iOS 开源项目

iOS 开源项目 在 Github 上 Star 太多了,有时候很难找到自己想要的开源库,所以在此记录下来.便于自己开发使用,也顺便分享给大家. 动画 awesome-ios-animation收集了iOS平台下比较主流炫酷的几款动画框架 RCTRefreshControlqq的下拉刷新 TBIconTransitionKiticon 的点击动画过渡效果 PullToBounce类似百度外卖的下拉刷新动画 LiquidFloatingActionButton可定制水滴型浮动动态按钮组件及演示 C

iOS开源项目周报1229

由OpenDigg 出品的iOS开源项目周报第三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Mars 微信官方的跨平台跨业务的终端基础组件 Each 优雅的时钟接口 json2swift 产生基于JSON数据的优秀Swift数据模型 arek 整洁并便于使用的各种iOS许可的封装 QMUI_iOS 提高项目UI 开发效率的解决方案 Reactions 仿Facebook点赞评价功能 Koyom

iOS开源项目(新)

初学者有了一些基础后,读源码是很好的学习和进阶方式,但是一定要选对源码.选好源码.刚才还在某社区怒喷别人分享的烂资源误人子弟,分享一些二把刀子写的「高仿XXX」源码,真是不能忍.如果你问我喷对我有啥好处,能想到的只有两个字:情(zhuang)怀(b). OK,下面推荐几个业界良心,awesome系列: https://github.com/vsouza/awesome-ioshttps://github.com/joeljfischer/awesome-apple Swift: matteocr

直接拿来用!最火的iOS开源项目(一~三)

结束了GitHub平台上“最受欢迎的Android开源项目”系列盘点之后,我们正式迎来了“GitHub上最受欢迎的iOS开源项目”系列盘点.今天,我们将介绍20个在GitHub上非常受开发者欢迎的iOS开源项目,你准备好了吗? 1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库.它建立在NSURLConne

iOS开源项目周报0209

由OpenDigg 出品的iOS开源项目周报第七期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Hedwig 向SMTP服务器轻松传递email Dotzu iOS开发者的调试工具 Xniffer Swift网络分析器 CodeEditor Swift代码编辑器 Motion 视图控制器之间的过渡动画 ViewStyle 设置iOS中视图的外观样式 equatable-code-generator 合理的代

iOS开源项目周报0112

由OpenDigg 出品的iOS开源项目周报第五期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. GDPerformanceView-Swift 状态栏上方显示手机状态 TXScrollLabelView 在视图里显示广告或者重播 FAQView 在iOS中轻松使用FAQ视图 KSPhotoBrowser 小而美的图片浏览器 PieCharts 易于使用和高度可定制的饼图库 DMSwipeCards

iOS开源项目周报1222

由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. ios-oss Kickstarter的开源iOS app TinyConsole 一个小巧的日志控制器 Jelly 几行代码定制ViewController动画 Import 从代码中任何地方添加imports的Xcode扩展 brickkit-ios 讨人喜欢的布局库 FileExplorer 在i

iOS开源项目周报1215

由OpenDigg 出品的iOS开源项目周报第一期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. PYSearch 优雅的iOS搜索控件 Sourcery 为Swift提供meta编程 CreditCardForm-iOS 仿实际信用卡UI TimelineTableViewCell 时间线视图 LLWeChat 实现IM基本功能 pxctest 在多个iOS模拟器中并行执行XCTest套件 SJF