设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

十款不容错过的Swift iOS开源项目:学个痛快!

2014-10-17 11:41| 发布者: joejoe0332| 查看: 3903| 评论: 0|原作者: csdn|来自: csdn

摘要: 如果你从事的是iOS开发的工作,那么使用Swift语言也许会是一个不错的选择,相较Objective-C,Swift更易学习也更加强大。不过,纵观Swift教程,你会发现讲解的比较广泛,且并未深入涉及代码学习和实现等。这里,为了 ...

转自:http://www.csdn.net/article/2014-10-14/2822083-swift-ios-open-source-projects

原文:medium

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


1. Alamofire

  Alamofire是一个使用Swift语言编写的HTTP网络库,支持各种 HTTP Method、JSON、文件上传、文件下载和多种认证方法,可以很简单的用于异步网络通信和业务流程链反应。使用要求:iOS 7.0+/Mac OS X 10.9+、Xcode 6.0。

代码示例:

响应处理

  1. Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo""bar"])  
  2.          .response { (request, response, data, error) in  
  3.                      println(request)  
  4.                      println(response)  
  5.                      println(error)  
  6.                    }  
2. Surge

Surge是一个基于Accelerate框架和C语言开发,用于进行矩阵运算、数学信号处理和图像处理的API。换句话说,就是可以非常快速的处理数学、语音和图像信号。

代码示例:

用法

计算总和[Double]

  1. import Surge  
  2. let n = [1.0, 2.0, 3.0, 4.0, 5.0]  
  3. let sum = Surge.sum(n) // 15.0  
计算乘积[Double]s
  1. import Surge  
  2. let a = [1.0, 3.0, 5.0, 7.0]  
  3. let b = [2.0, 4.0, 6.0, 8.0]  
  4. 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。

代码示例:

Loop

  1. //If json is .Dictionary  
  2. for (key: String, subJson: JSON) in json {  
  3. //Do something you want  
  4. }  
  1. //If json is .Array  
  2. //The `index` is 0..<json.count's string value  
  3. for (index: String, subJson: JSON) in json {  
  4. //Do something you want  
  5. }  

4. Dollar.swift

Dollar是一个Swift库,无需扩展任何内置对象就为Swift语言提供有效的函数式编程辅助方法,类似于Lo-Dash或JavaScript中的Underscore。而Cent则是通过扩展功能来扩展Swift中的特定对象类型。

代码示例:

Dollar示例:Array

  1. $.at(["ant""bat""cat""dog""egg"], indexes: 0, 2, 4)   
  2. => ["ant""cat""egg"]  
Cent示例:Date
  1. let date = Date.from(2014, 1, 1)   
  2. => "Jan 1, 2014, 12:00 AM"  
  3.   
  4. let parsedDate = Date.parse("2014-01-01", format: "yyyy-MM-dd")  
  5. => "Jan 1, 2014, 12:00 AM"  
  6.   
  7. let currentUnix = Date.unix()  
  8. => 1,412,829,874.07114  
  9.   
  10. var otherNSDate = Date()  
  11. let otherUnix = Date.unix(otherDate)  
  12. => 1,412,829,938.92399  




5. ExSwift

ExSwift是一组Swift语言对标准类型和类的扩展。

代码示例:

迭代

  1. each (eachFunction each: (Key, Value) -> ())  
  1. let dictionary = ["A": 1, "B": 2, "C": 3]  
  2. dictionary.each { key, value in println(key, value) }  
  3. /* Prints → */  
  4. // (A, 1)  
  5. // (B, 2)  
  6. // (C, 3)  

6. SwiftTask

SwiftTask是使用Swift语言编写的状态机,拥有许多和他人创建的业务工作流任务的用例,综合了Promise + progress + pause + cancel,使用SwiftState(状态机)。

代码示例:

基本定义

  1. // define task  
  2. let task = Task<Float, String, NSError> { (progress, fulfill, reject, configure) in  
  3.     player.doSomethingWithProgress({ (progressValue: Float) in  
  4.         progress(progressValue) // optional  
  5.     }, completion: { (value: NSData?, error: NSError?) in  
  6.         if error == nil {  
  7.             fulfill("OK")  
  8.         }  
  9.         else {  
  10.             reject(error)  
  11.         }  
  12.     })  
  13.     // pause/resume/cancel configuration (optional)  
  14.     configure.pause = { [weak player] in  
  15.         if let p = player { p.pause() }  
  16.     }  
  17.     configure.resume = { [weak player] in  
  18.         if let p = player { p.resume() }  
  19.     }  
  20.     configure.cancel = { [weak player] in  
  21.         if let p = player { p.cancel() }  
  22.     }  
  23. }  
  24. // set then & catch  
  25. task.then { (value: String) -> Void in  
  26.     // do something with fulfilled value  
  27. }.catch { (error: NSError?, isCancelled: Bool) -> Void in  
  28.     // do something with rejected error  
  29. }  
  30. // you can call configured operations outside of Task-definition  
  31. task.pause()  
  32. task.resume()  
  33. task.cancel()  

7. HanekeSwift

Haneke是一款使用Swift语言编写的,轻量级的iOS通用缓存。它为UIImage、NSData、JSON和String提供记忆和LRU磁盘缓存或其他像数据可以读取或写入的任何其他类型。特别地是,Haneke更擅长处理图像。使用要求:iOS 8.0+、Xcode 6.0。

代码示例:

还可创建自己的缓存

  1. let cache = Haneke.sharedDataCache  
  2. cache.set(value: data, key: "funny-games.mp4")  
  3. // Eventually...  
  4. cache.fetch(key: "funny-games.mp4").onSuccess { data in  
  5.     // Do something with data  
  6. }  

8. Cartography

Cartography是用来声明Swift中的Auto Layout,无需输入任何stringly就可设置自己Auto Layout的约束声明。

代码示例:

如何使用

  1. layout(view1, view2) { view1, view2 in  
  2.     view1.width   == (view.superview!.width - 50) * 0.5  
  3.     view2.width   == view1.width - 50  
  4.     view1.height  == 40  
  5.     view2.height  == view1.height  
  6.     view1.centerX == view.superview!.centerX  
  7.     view2.centerX == view1.centerX  
  8.     view1.top >= view.superview!.top + 20  
  9.     view2.top == view1.bottom + 20  
  10. }  




9. Sleipnir

Sleipnir是一款适用于Swift的BDD风格框架,不依赖NSObject,是纯粹的Swift测试框架,不使用XCTest。同时,Sleipnir还具有很好的命令行输出和支持自定义测试报告及随机测试调用等特性。

代码示例:

  1. class SomeSpec : SleipnirSpec {  
  2.     let someSpec : () = describe("Some spec") {  
  3.         var someArray: [Int]?  
  4.         beforeEach {  
  5.             someArray = [1, 2, 3]  
  6.         }  
  7.         afterEach {  
  8.             someArray = nil  
  9.         }  
  10.         it("should pass") {  
  11.             expect(someArray).toNot(beNil())  
  12.             expect(someArray).to(contain(3))  
  13.         }  
  14.     }  
  15. }  

10. Quick

Quick是一个行为驱动的Swift和Objective-C开发测试框架,CSDN也有相关文章介绍过

代码示例:

使用的例子

  1. // Swift  
  2. import Quick  
  3. import Nimble  
  4. class DolphinSpec: QuickSpec {  
  5.   override func spec() {  
  6.     it("is friendly") {  
  7.       expect(Dolphin().isFriendly).to(beTruthy())  
  8.     }  
  9.     it("is smart") {  
  10.       expect(Dolphin().isSmart).to(beTruthy())  
  11.     }  
  12.   }  
  13. }  
  1. // Objective-C  
  2. #import <Quick/Quick.h>  
  3. #import <Nimble/Nimble.h>  
  4. QuickSpecBegin(DolphinSpec)  
  5. it(@"is friendly", ^{  
  6.   expect(@([[Dolphin new] isFriendly])).to(beTruthy());  
  7. });  
  8. it(@"is smart", ^{  
  9.   expect(@([[Dolphin new] isSmart])).to(beTruthy());  
  10. });  
  11. QuickSpecEnd 

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部