本文为熟悉使用Objective-C开发iOS快速转入swift开发提供一些便利的途径,没有过多华丽的说明底层原理,也没有过多的概念说明,只提供swift的基本使用以及一些使用示例。高手请让路哈。

Swift中几种数据类型的简单使用,具体的可以看API文档的相关介绍。

枚举:

在其他的语言中枚举的本质是一组整形数字,通过枚举将这些整形数字跟一些有意义的名称联系起来。但是在swift中枚举并没有要求一个枚举值必须对应一个数值,你可以只单纯是一个名称,当然你也可以指定枚举值跟一些数值联系起来,同时数值不局限于整形数值,可以是浮点数值,字符或是字符串。

case用来定义一行新的成员,也可以将多个值定义到同一行使用逗号分隔
1 enum Month{
case January
case February
case March
case April
case May
}

同时你也可以将枚举值与数值对应起来:

 enum Month:Int{
case January =
case February
case March
case April
case May
}
并且使用rawValue来访问原始值:
Month month = Month.Janusry
也可以通过rawValue来创建一个枚举值:
let Jan = Month(rawValue:)//注意此时是一个可选类型

数组:

swift中的数组跟OC的差别就是没有了@符号

1,创建:

let array = ["happy","sad","down"]

//OC的数组只能够存储同一种数据类型,在swift中可以存储不同数据类型的值

let array = ["szt","szt1",,"sff"]

2,取值

数组取值同样是通过下标取值的,跟OC一样

3,遍历

for item in array
{
print(item)
}

5,删除:

swift中数组删除一个元素会将被删除的元素返回

array.removeAtIndex()
array1.removeAll(keepCapacity: true)移除掉所有元素之后是否保存容量

6,数组合并:

数组里面元素同种类型才可以合并

 var arr5 = ["",""]
var arr6 = [“",""]
arr5 += arr6 //数组合并的写法

字典:

1,字典的创建跟数组一样用[]

var dict = ["name":"szt","age":30]

2,遍历数组有两种方式

(1)遍历key值

 for q in dict.keys
{
  print(dict[q])
}

(2)元组遍历

 for (key,value) in dict
{
print(key)
  print(value)
}

3,新增/更新键值对

/*如果对应的key在dict中没有的话就新增,如果有的话就更新*/

var dict = ["name":"st","age":23]

更新:dict["name"] = "szt"

新增:dict["gender"] = "man"

4,删除:

dict.removeValueForKey("name")

5,合并

var dict2 = ["socore":32]

for (key,value) in dict2

{

dict[key] = value

}

字符串:

OC中的字符串是NSString,swift中是String,而且是一个结构体,性能比OC要高

1,创建

创建一个字符串:var str = "Hello, playground"

格式化创建一个字符串"name = szt,age = 30"

let num: Int = 23

let name: String = "szt"

var  person = "name = \(name),age = \(num)"

2,截取:

截取字符串:在swift截取字符串建议使用OC中截取字符串的方法,所以在创建字符串的时候指明类型为NSString类型的

 var str5:NSString = "iOS_developer_SZT"或者
var str5 = ""iOS_developer_SZT"" as NSString
str5.substringFromIndex()
str5.substringToIndex()
str5.substringWithRange(NSMakeRange(, ))

3,遍历

swift中的字符串支持遍历的:

 var str7 = "www.Baidu.com"
for c in str7.characters // 在swift2.0之前必须加上.characters
3 {
4   print(c)
5 }

闭包:

swift中的闭包相当于OC的block,用于保存一段代码段,使用闭包或是block的好处是可以将闭包或block中的代码段放在后台执行不会卡住主线程,用于执行一些耗时的操作。

swift中闭包的格式为:

  {
  ()->() /*前面一个为输入参数类型,后面一个返回参数类型*/
  in
  /*闭包中的代码段*/
}

1,闭包定义

定义一个输入参数为String类型,返回值为[String]类型的闭包:

 let demo = {
(str:String)->[String]
in
/*.......(代码段)*/
return [str,str,str]
}

2,闭包作为函数参数:

func loadData(num:Int, finished: ()->())
{
print("执行耗时操作")
finished() //调用闭包
}

调用这个函数:

loadData(12) { () -> () in

/*闭包中的代码段*/

}

3,闭包中的循环引用:

闭包的循环引用类似于block中的循环引用,当self对闭包进行强引用,闭包中又对self进行强引用的,这时候后就会引起闭包的循环引用问题。解决的方式时将self进行weak修饰。

例子:

class ViewController: UIViewController {
var finished:(()->())?
override func viewDidLoad() {
super.viewDidLoad()
//闭包的循环引用分析
/*
viewController中定义了一个闭包finished,self拥有闭包finish,在self的finish中又强引用了self造成的循环引用,解决的问题就是在
外面weak 修饰self
*/
weak var weakSelf = self
doSomeThing { () -> () in
print("这是在闭包当中")
//加!原因是self有可能释放了没值,加!表示肯定self在这里是有值的
weakSelf!.view.backgroundColor = UIColor.redColor()
}
}
func doSomeThing(finished:()->())
{
print("做一些耗时的操作")
self.finished = finished
finished()
}
deinit // 在swift中没有dealloc方法,取而代之的是deinit方法,在页面销毁的时候调用
{
print("页面销毁")

}

函数:

函数格式

func 函数名()->()
第一个括号表示输入参数类型
第二个括号表示返回参数类型

例:

,无输入参数无返回值
func say() ->Void 或 func say() ->() 或 func say() ,无输入参数有返回值
func isOrNot()->Bool
{
print("OK")
return true
} ,有输入参数无返回值
func addNum(b:Int,a:Int)
{
print(a+b)
} ,有参数有返回值
func maxNum(a:Int,b:Int) ->Int
{
return a > b ? a:b
}

Swift语言的更多相关文章

  1. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  2. IOS系列swift语言之课时二

    今天我们要讲的就是函数[对于函数,在最后面还有几道题,喜欢的博友可以看了自己做一下,和我交流一下] 当然这与我们的c语言还是有一定的共同之处的,对于有一些c语言或者是java基础的童鞋,我觉得是很容易 ...

  3. IOS入门之Swift语言(一)

    经过不断的努力,小哥也买了台苹果设备,终于可以开始我的IOS之旅了,说来确实令人苦恼,为了学习IOS我这着贫农阶级,省了几个月的零花钱,外加向亲朋好友求救,最终痛下心扉,卖了台MAC pro128G版 ...

  4. 近期博客内容的规划(关于Swift语言)

    因为最近事情比较多,有一段时间没有发表博客了.前一段时间,利用空余时间翻译了一本关于Swif的书籍,过一段时间就会出版吧.通过翻译此书,英语水平没提高多少,不过Swift算是系统的学习了一下. 在翻译 ...

  5. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  6. Swift语言学习

    因为想要学Mac os x编程,中文教材太少了,看了很多厉害的英文教材,很多都是swift语言的了,所以决定先要大体学一下swift语言. 学习一门语言,第一件事看swift官方文档,这里附上Coco ...

  7. Swift语言之类型方法

    Swift语言有很多特性,其中之一就是类型方法,相对于其他比较流行的编程语言(C#.Java),在Swift中类型方法最大的特征在于它的可继承性,我们举个例子说明: 俗话说,龙生龙凤生凤老鼠生儿会打洞 ...

  8. 赶时髦过了一遍Swift 语言....

    Swift 语言 2014年6月3日发布,替代OBJECT-C Swift is a new programming language for creating iOS and OS X apps. ...

  9. IOS系列swift语言之课时八

    这节课需要讲的就是可选链,内存管理,引用计数,unowned解决 //: Playground - noun: a place where people can play import UIKit / ...

  10. swift语言特性

    最近苹果推出了他们新的开发语言,swift,他们自己的说法是,swift语言将会更快捷,更安全等等.但是具体的性能,还需要在后面的实践过程中去观察,但是就目前来说swift语言除了将大部分21世纪静态 ...

随机推荐

  1. js中的包装对象。

    我们都知道在js中普通类型的变量是没有属性和方法的,然后有时却并不是这样. var str = "努力,奋斗"; console.log(str.length); var num ...

  2. 红黑树(五)之 Java的实现

    概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C+ ...

  3. 斜堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了斜堆,本章给出斜堆的Java版本.还是那句老话,三种实现的原理一样,择其一了解即可. 目录1. 斜堆的介绍2. 斜堆的基本操作3. 斜堆的Java实现(完整源码)4. ...

  4. Java Garbage Collection Basics--转载

    原文地址:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html Overview Purpose ...

  5. [mysql]brew 安装 配置 操作 mysql(中文问题)

    mac 下卸载mysqldmg mac下mysql的DMG格式安装内有安装文件,却没有卸载文件--很郁闷的事. 网上搜了一下,发现给的方法原来得手动去删. 很多文章记述要删的文件不完整,后来在stac ...

  6. sprint3(第八天)

    昨天忘了发博客,最近在整合前台和后台的内容,在sprint结束前应该能整合好,然后实现前后台的联系,实现点餐功能. 最近要准备大作业也要复习四六级考试,所以花在项目的时间比较少了,请老师谅解. 燃尽图

  7. 《构建之法》之第8、9、10章读后感 ,以及sprint总结

    第8章: 主要介绍了软件需求的类型.利益相关者,获取用户需求分析的常用方法与步骤.竞争性需求分析的框架NABCD,四象限方法以及项目计划和估计的技术. 1.软件需求:人们为了解决现实社会和生活中的各种 ...

  8. ASP.NET MVC中错误日志信息记录

    MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public clas ...

  9. HDFS-RAID原理和实现

    HDFS-RAID 是Facebook基于hadoop-20-append分支(第一代Hadoop)开发的raid方案,对HDFS的修改极少,主要包括为NameNode增加了根据block信息找到bl ...

  10. web api返回格式小结

    web api返回格式小结: 1.默认是返回xml格式数据,如果需要返回json格式,需要在Global.asax中加入: GlobalConfiguration.Configuration.Form ...