阅读更多

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 条 请登录后发表评论

发表评论

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

相关推荐

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

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

  • 十款不容错过的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进行开发,苹果发布了一系类的技术文档...

  • 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进行开发,苹果发布了一系类的技术文档,...

  • 【java毕业设计】智慧社区教育服务门户.zip

    有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上

  • 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip

    【资源说明】 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 【java毕业设计】智慧社区宠物管理系统(源代码+论文+PPT模板).zip

    zip里包含源码+论文+PPT,有java环境就可以运行起来 ,功能说明: 文档开篇阐述了随着计算机技术、通信技术和网络技术的快速发展,智慧社区门户网站的建设成为了可能,并被视为21世纪信息产业的主要发展方向之一 强调了网络信息管理技术、数字化处理技术和数字式信息资源建设在国际竞争中的重要性。 指出了智慧社区门户网站系统的编程语言为Java,数据库为MYSQL,并实现了新闻资讯、社区共享、在线影院等功能。 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。

  • 免费下载:Civil War (Stuart Moore)_xVBgd.zip

    免费下载:Civil War (Stuart Moore)_xVBgd.zip

  • JSP基于WEB的图书馆借阅系统的设计与实现(源代码+论文)(2024pw).7z

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

  • 免费下载:Spider-Man (Stefan Petrucha)_2pBuA.zip

    免费下载:Spider-Man (Stefan Petrucha)_2pBuA.zip

  • jj视频合并程序代码QZQ.txt

    jj视频合并程序代码QZQ

Global site tag (gtag.js) - Google Analytics