您好,欢迎来到时间财富网
全部需求分类
当前位置:首页 > 移动应用 > 十款不容错过的Swift iOS开源项目
十款不容错过的Swift iOS开源项目
2016/1/12 11:11:39   作者:逗比大叔   人气:517次  评论(0)
所属标签: IOS 

  如果你从事的是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。

  


  代码示例:

  响应处理

  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

  3. SwiftyJSON

  Swift对于类型有着非常严格的控制,所以在处理JSON时会很麻烦。而SwiftyJSON就是让在Swift语言中处理JSON数据变得更简单的开源类库。使用要求:iOS 7.0+/Mac OS X 10.9+、Xcode 6.0。

  


  代码示例:

  Loop

  //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中的特定对象类型。

  


  代码示例:

  Dollar示例:Array

  $.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