首页 » Swift » Swift入门之数据类型

Swift入门之数据类型

原文 http://blog.csdn.net/qq_24725665/article/details/76209148

2017-07-27 18:20:22阅读(578)

Swift入门之数据类型

Swift包含了C和OC上所有的数据类型:

OC 基本类型 int CGFloat double NSInteger NSNumber NSString Bool 集合类型:NSArray NSDictonary NSSet Swift 对应为Int Float double true fause String 集合类型:Array/Dictonary/Set Swift新添加数据类型: 元组:Tuple,元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以使用一个元组返回多个值. 可选类型:Optional,用于处理值缺失的情况.可选表示:那有一个值 ,并且其等于x 或者 那没有值. 有点像OC中的nil,但其可用在任何类型上,不仅仅是类,可选类型比OC中的nil指针更加安全也更具表现力,其是Swift许多强大特性的重要组成部分. Swift是一门类型安全的语言. 常量和变量
常量 
let nameStr = "mmmm"
变量 
var ageNum = 26
可写多个
var ageNum1 = 26,ageNum2 = 27,ageNum3 = 6
类型标注

当你声明常量或变量时 可以加上类型标注,说明常量或变量中存储的值的类型

格式: 在常量或变量后面 添加 : 然后加上类型名称,经验证加空格不可以

let tag3:Int = 300
var tag4:Float = 12.3
var tag1,tag2,tag3:Double
两者的命名 可以使用任何你喜欢的字符作为常量或变量的名字,包括Unicode字符甚至表情 名字不能包含数学符号 箭头 保留的Unicode码位,连线与制表符 不能以数字开头但是其他地方可以使用数字比如中间或末尾 注释

允许注释嵌套注释

分号 不强制使用; 在同一行内写多条语句时,需加上 整数 包括有符号 无符号 零 Swift提供了8 16 32 64位的有符号和无符号的整数类型,命名方式和C语言的命名很像. Uint8无符号8位 Int32 有符号32位 Swift提供了一个特殊的整数类型Int,长度和当前平台的原生字长相同.(比如,在32位平台上,Int和Int32长度相同;在64位平台上,其和Int64长度相同),一般来说使用Int足够了.

Uint的小结:
其与Int对比,一般建议使用Int.避免类型转换

浮点数 浮点类型比整数类型的范围更大,可存储比Int类型更大或更小的数字 Swift提供了两种有符号浮点数类型:Double(64位) Float(表示32位浮点数) 整数转换

主要指不同进制之间的相加减时,要转化为数制一致.

 let widthNum:Int8  = 1
 let heightNum:Int16  = 500
 let mySum = heightNum + Int16(widthNum)
 //输出的四种表达方式
 print(mskWidth,widthNum,heightNum,mySum)
浮点数与整数之间的转换

两者之间转换必须是显式的.

let mskWidth = 10.0
let mmNum = 10
let nnNum = mskWidth + Double(mmNum)      
let aaNum = 10.3
let bbNum = 3.9
print(nnNum,Int(aaNum),mmNum + Int(bbNum))

输出结果为 20.0 10 13 取整时 是舍弃小数部分,不存在四舍五入这一说

类型别名(type aliases)

关键字为typealias,用来给现有类型起一个有意义的名字时,就需要他.

typealias AudioSample = Uintbint6

类似OC中的宏 就是替换 便于偷懒个人觉得 哈哈哈

布尔值

true false

元组

Turples 把多个值组合为一个复合值,其内部可以是任意类型,不要求类型相同.

解决了OC时函数只能返回一个值的问题,在OC时解决多个返回值的处理方法时,创建一个可变字典,然后返回字典,再解析即可.

 //元组练习
let httpErrorMessage = (404,"Not Found")
print("\(httpErrorMessage.0)",httpErrorMessage.1)
let (statusCode,statusMessage) = httpErrorMessage
print("\(statusCode)","====",statusMessage)
let (justStatusCode,_) = httpErrorMessage
print(justStatusCode)
let http2016Status = (status:2016,message:"OK")
print(http2016Status.status,http2016Status.message)
//输出结果为
404 Not Found
404 ==== Not Found
404
2016 OK
元组的元素可以为任意类型,彼此之间没有约束,元素个数不做限制 可以通过下标获取元组里面的元素,下标从零开始 如果只需要部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记 可以给元组里面的单个元素命名,然后可以通过元素名访问元素

元组在临时组织值的时候非常有用,但是不适合创建复杂的数据结构.如果不是临时使用,请使用类或结构体而不是元组.

可选类型(optional)

其用来处理 值 可能缺失的情况,表示:
有值,等于x; 或者 没有值;

在OC中,有返回值的函数,其返回值要么是一个对象,要么是nil,表示没有返回值. 但对于结构体,OC一般会返回一个特殊值(比如NSNotFound)来表示值缺失 在Swift出现了可选类型,其允许你 可以值缺失,但不需要返回一个特殊值表明.
let stringNum = "1245"
let num = Int(stringNum)
print(num)
//输出结果为
Optional(1245)

num被推测为类型”Int?” 或类型”optional Int”,从输出结果也可以看出来.

一个可选的Int值被写作 Int?,问好表示包含的值为可选类型,即可能包含Int值,有可能不包含值,且只能是Int或什么都没有.

nil

其与OC中的nil不一样.OC中nil是一个指向不存在对象的指针.但是在Swift里面,nil不是指针,其用来表示一个确定的值,用来表示值缺失,任何类型的可选状态都被设置为nil,不只是对象类型.

可以给可选变量赋值为nil,表示其没有值 不能用于非可选变量的常量或变量. 如果你声明一个可选的常量或变量,但是没有赋值,会自动被设置为nil
var rightAnswer:String 
// rightAnswer被自动设置为Nil
强制解析 !

使用 !来获取一个不存在的可选值会导致运行时错误,所以使用!强制解析值之前,一定要确定可选包含一个非nil得值.

if mmNum! = nil{
}
可选绑定

在if条件语句中使用常量和变量来创建一个可选绑定,仅在if语句的句中才能获取到值.相反,在guard语句中使用常量和变量来创建一个可选绑定,仅在guard语句外且在语句后才能获取到值.

 //可选绑定
let nnNumber = "1234String"
if let mmNumber = Int(nnNumber){
    print(mmNumber,nnNumber)
}else{
    print("\(nnNumber) can not be converted to an Integer")
}

代码解释:

Int(mm)其返回的内容为可选类型.若mm为数字字符串则返回 可选类型的数字,否则返回nil. 再来看上述代码 条件判断 若返回可选的数字 则,将该可选数字赋值给 nnNumber ,然后走print(mmNumber,nnNumber) 若返回的为nil,则走else语句.上述代码最终走else语句. 若nnNumber = “1234”,则最终走第一个语句,输出为 1234 1234 隐式解析可选类型

?变为!

错误处理

do catch

断言

断言允许附加一条调试信息

全局assert(::file:line:)函数 可以用来写一个断言.向这个函数传入一个结果为true或false的表达式以及一条信息当表达式的结果为false的时候这条信息会被显示.

let age = -3
assert(age >= 0,"A person's age cannot be less than zero ")

因为age = -3 ,断言会触发

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹