十款不容错过的swift ios开源项目 -凯发k8国际

0顶
0踩

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

1.

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是一个基于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.
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..

4.

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是一组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是使用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.

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是用来声明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是一款适用于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是一个行为驱动的swift和objective-c开发测试框架,过。



代码示例:

使用的例子
// 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
  • 大小: 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
来自:
0
0
评论 共 0 条 请登录后发表评论

发表评论

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

相关推荐

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

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

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

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

  • 为了指导开发者使用swift进行开发,苹果发布了一系类的技术文档,比如the swift programming language(中文)和using swift with cocoa and objective-c(中文),同时苹果也开通了其官方swift博客,最近更...

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

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

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

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

  •  - 一款优秀 android 图表开源库 mpandroidchart 的 swift 语言实现版(支持 objective-c 和 swift 调用)。缺省提供的示例代码为 objective-c。 teachart  - xhacker/teachart 一个简洁的 ios 图表库,支持柱状...

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

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

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • gb2312字符集 作用:国家简体中文字符集,兼容ascii。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从a1到f7, 低字节从a1到fe。将高字节和低字节分别加上0xa0即可得到编码。 gbk字符集 作用:它是gb2312的扩展,加入对繁体字的支持,兼容gb2312。 位数:使用2个字节表示,可表示21886个字符。 范围:高字节从81到fe,低字节从40到fe。 gb18030字符集 作用:它解决了中文、日文、朝鲜语等的编码,兼容gbk。 位数:它采用变字节表示(1 ascii,2,4字节)。可表示27484个文字。 范围:1字节从00到7f; 2字节高字节从81到fe,低字节从40到7e和80到fe;4字节第一三字节从81到fe,第二四字节从30到39。

  • 毕业设计,安卓app,基于java开发的学生成绩课件管理系统app,包括pc端和安卓anroid手机app,内含java完整源码 安卓andriod学生成绩课件管理系统 系统开发环境: windows myclipse(服务器端) eclipse(手机客户端) mysql数据库 服务器也可以用eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,mvc设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用ssh框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 班级: 班级编号,班级名称,开办日期,班主任 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,家庭地址 老师: 教师编号,登录密码,姓名,性别,出生日期,联系电话,邮件,地址,

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • 软件开发设计:php、qt、应用软件开发、系统软件开发、移动应用开发、网站开发c 、java、python、web、c#等语言的项目开发与学习资料 硬件与设备:单片机、eda、proteus、rtos、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:linux、ios、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

  • 企业定价策略分销策略与促销策略.docx

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

global site tag (gtag.js) - google analytics
网站地图