zoukankan      html  css  js  c++  java
  • 十个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良师益友网。

  • 相关阅读:
    php.ini 干了些啥?
    为什么你的 phpinfo() 无法显示
    转:反向代理服务器的工作原理
    nginx fastcgi php-fpm的关系梳理
    DOM中offsetLeft与style.left的区别
    移动端与PC端的触屏事件
    移动端适配属性
    移动设备横竖屏监听事件
    关于滚动条滚动不流畅问题
    Oracal
  • 原文地址:https://www.cnblogs.com/yuguotianqing/p/4052013.html
Copyright © 2011-2022 走看看