阅读更多

0顶
0踩

移动开发
如果你从事的是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..<json.count's string value
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<Float, String, NSError> { (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 <Quick/Quick.h>
#import <Nimble/Nimble.h>
QuickSpecBegin(DolphinSpec)
it(@"is friendly", ^{
  expect(@([[Dolphin new] isFriendly])).to(beTruthy());
});
it(@"is smart", ^{
  expect(@([[Dolphin new] isSmart])).to(beTruthy());
});
QuickSpecEnd
  • 大小: 20.1 KB
  • 大小: 19.6 KB
  • 大小: 8.2 KB
  • 大小: 65.1 KB
  • 大小: 35.9 KB
  • 大小: 68.7 KB
  • 大小: 19.7 KB
  • 大小: 20.1 KB
  • 大小: 17.7 KB
  • 大小: 16.1 KB
来自: CSDN
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 学个痛快!十款不容错过的SwiftiOS开源项目

    相较Objective-C,Swift语言要更为简单和强大。...这里,为了让大家能够进一步了解Swift及让开发工作更容易上手,作者以自身的体验,从几百个项目中选出了这十个不错的开源项目,希望可以为iOS开发者提供帮助。Ala

  • 十款不容错过的Swift iOS开源项目及介绍

    十款不容错过的Swift iOS开源项目.http://www.csdn.net/article/2014-10-16/2822083-swift-ios-open-source-projects缓存框架 Haneke:Haneke是一款使用Swift语言编写的,轻量级的iOS通用缓存。它为UIImage、NSData...

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

    如果你从事的是iOS开发的工作,那么使用...这里,为了让大家能够进一步了解Swift及让开发工作更容易上手,作者以自身的体验,从几百个项目中选出了这十个不错的开源项目,希望可以为iOS开发者提供帮助。 1. Alamofir

  • 【IOS移动开发技术】iOS开发不容错过的常用Swift 开源项目及技术介绍

    拥有着苹果先天生态优势的Swift自发布以来,各种优秀的开源项目便层出不穷。本文作者站在个人的角度,将2014年Swift开源项目做了一个甄别、筛选,从工具、存储、网络、界面、框架到Demo以及完整应用等,满满的干货。...

  • 学习Swift,一定不能错过的10大开源项目

    为了指导开发者使用Swift进行开发,苹果发布了一系类的技术文档,比如The Swift Programming Language(中文)和Using Swift with Cocoa and Objective-C(中文),同时苹果也开通了其官方Swift博客,最近更...

  • iOS 开源项目介绍之网络篇

    本文介绍一些UI方面的开源项目,大家可以结合自己的需求选择合适的开源库进行使用和学习。...本文是iOS开源项目介绍系列之三,介绍一些iOS中常用的一些网络相关开源库。 我的博客:http://blog.csdn.net/

  • GitHub上Swift开源项目!

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

  • 学习Swift,一定不能错过的10大开源项目!

    如果你是位iOS开发者,或者你正想进入该行业,那么Swift为你提供了一个绝佳的机会。Swift的设计非常优雅,较Obj-C更易于学习,当然也非常强大。 为了指导开发者使用Swift进行开发,苹果发布了一系类的技术文档...

  • BeeFun-Pro:适用于Swift的iOS的Github客户端

    【消息】通知,事件,问题,一个都不放过,项目重在参与,提醒不容错过。 【收藏夹】收藏最棒的项目,关注最前沿的开源黑科技。 【查看】查看每个项目的详情,查看每个开发者的详情,一丝丝细节都有含义。 ...

  • iOS开源项目 库

     - 一款优秀 Android 图表开源库 MPAndroidChart 的 Swift 语言实现版(支持 Objective-C 和 Swift 调用)。缺省提供的示例代码为 Objective-C。 TEAChart  - xhacker/TEAChart 一个简洁的 iOS 图表库,支持柱状...

  • 开发者不可错过的开源工具 —— iOS 篇

    在当前移动互联网的大潮下,移动开发变得越来越重要。不论是 Android 开发还是 iOS 开发,都异常火爆,而开源在推进移动开发中更是扮演着关键的角色。 在上一周的文章中,...开发者不可错过的开源工具 —— Android

  • 学习Swift 不能错过的10大开源项目!

    如果你是位iOS开发者,或者你正想进入该行业,那么Swift为你提供了一个绝佳的机会。Swift的设计非常优雅,较Obj-C更易于学习,当然也非常强大。  为了指导开发者使用Swift进行开发,苹果发布了一系类的技术文档,...

  • 高分项目 基于STM32单片机的宠物RFID阅读器源代码+项目资料齐全+教程文档.zip

    【资源概览】 高分项目 基于STM32的宠物RFID阅读器源代码+项目资料齐全+教程文档.zip高分项目 基于STM32的宠物RFID阅读器源代码+项目资料齐全+教程文档.zip高分项目 基于STM32的宠物RFID阅读器源代码+项目资料齐全+教程文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!

  • node-v7.7.4-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 高分项目 基于STM32单片机+Labview的消防面罩设计源代码+项目资料齐全+教程文档.zip

    【资源概览】 高分项目 基于STM32单片机+Labview的消防面罩设计源代码+项目资料齐全+教程文档.zip高分项目 基于STM32单片机+Labview的消防面罩设计源代码+项目资料齐全+教程文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!

  • node-v8.1.4-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 工作总结PPT16.pptx

    工作总结PPT16.pptx

  • 12864IIC 0.96寸OLED 51单片机汇编程序分享(ssd1306)

    12864IIC 0.96寸OLED 51单片机汇编程序分享(ssd1306)

  • node-v7.10.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics