一、Swift简介
1.日志输出语句
let say = "hello,swift"
print(say) //最常用的日志输出语句,可以直观的看见你创造的东西
debugPrint(say) //可以将推断出的类型添加到输出,例如给字符串内容添加双引号
dump(say) //通常用于将一个对象的内容,如数组、字典等,转移到标准输出
print(say + "1111") //使用加号,可以将多项内容拼接输出
print("hello world\(say)")
2.在控制台输入类的实例及其属性
class MyClsss
{
var num = 0
var age = 13
func description() {
print("hi")
}
}
let mc = MyClsss()
print(mc) //可以查看到实例的类型信息
dump(mc) //可以在控制台查看到实例的各个属性的信息
dump(mc.age) //也可单独查看某个属性的信息
二、数据类型
1.Swift的(Boolean)布尔类型
let hasLogin = true //布尔类型有两个不同的枚举成员,true和false
let hasRegist = false
hasLogin.hashValue //布尔值为真的哈希值为1
hasRegist.hashValue //值为假的哈希值为0
hasLogin.description //通过常量的描述属性,可以查看常量的布尔值转换为字符串的情况
hasRegist.description
/*
注意:1.Swift语言中的布尔类型不支持YES和NO
2.Swift语言不能将整型数值转换成布尔类型,只能对布尔类型进行判断
3.当对布尔类型进行判断时,需要使用左右大括号,将代码块包括起来
*/
2.Swift的(Int)整型类型
//整型包括有符号整型和无符号整型
var a = 1
var b = 2
var c:Int = 2
var d:Int8 = 3 //定义一个8位的整型变量
var e:UInt = 4 //定义一个无符号的整型变量
//无符号整型和有符号整型的字节长度,和所在平台的原生字长相同。
let minValue = UInt8.min //通过内部属性min查看他的最小值
let maxValue = UInt8.max //通过内部属性max查看他的最大值
var f = 5
f.bigEndian //通过大端属性,查看低地址可以存放的最高的有效字节数
f.littleEndian //通过小端属性,查看低地址可以存放的最低的有效字节数
f.byteSwapped //查看字节顺序交换后的当前整数
f.description //查看当前整数转换为字符串后的值
f.advanced(by: 1) //获得当前整数在增加指定数量之后的值
f.distance(to: 8) //获得当前整数在指定整型数值的差值
3.Swift的(Float)和(Double)浮点类型
var a1 = 1.5
var a2:Float = 2.5 //float表示32位浮点数,精度不高可以使用
var a3 = Float.infinity //获得指定类型的最大值
var a4:Double = 3.5 //double表示双精度类型的浮点变量,高精度使用
a4 + 3.4
a4 - 0.9
a4 * 2.0
a4 / 4
a4.addProduct(2.0, 4.0) //将变量的值加上2,然后在乘以4
a4.advanced(by: 1.1) //将变量的值乘以1.1
a4.distance(to: 16) //获得变量的值和16的差值
var a5 = 24.0
a5.significand //获得浮点数值得有效位数
a5.exponent //获得浮点数值的指数
a5.binade //获得和24.0具有相同符合和指数的浮点数值,且有效位数为1
a5.bitPattern //获得数值的编码的位模式
a5.description //查看当前浮点数值转换为字符串后的值
a5.isFinite //检查当前的浮点数值是否为有限数值
a5.isInfinite //检查当前的浮点数值是否为无限数值
a5.isLess(than: 6.0) //检查当前的浮点数值是否小于6.0
a5.isLessThanOrEqualTo(6.0) //检查当前的浮点数值是否小于或等于6.0
a5.isNaN //检查当前的浮点数值是否为非数字
a5.isZero //检查当前的浮点数值是否为0
a5.magnitude //获得当前浮点数的值大小
a5.negate() //获得当前浮点数的负值(相反数)
a5.negate()
12.5.rounded(.down) //将浮点数值转换为整型数值,并舍入到小于或等于源数值的最接近的允许值
-12.5.rounded(.down)
12.5.rounded(.up) //将浮点数值转换为整型数值,并舍入到大于或等于源数值的最接近的允许值
-12.5.rounded(.up)
12.5.rounded(.awayFromZero) //将浮点数值转换为整型数值,并舍入到幅度大于或等于源数值的允许值,即向远离0的方向舍入
-12.5.rounded(.awayFromZero)
12.5.rounded(.towardZero) //将浮点数值转换为整型数值,并舍入到幅度小于或等于源数值的允许值,即向靠近0的方向舍入
-12.5.rounded(.towardZero)
12.2.rounded(.toNearestOrAwayFromZero) //将浮点数值转换为整型数值,并舍入到最接近的允许值,如果两个值同样接近,则选择具有较大幅度的值
12.5.rounded(.toNearestOrAwayFromZero)
-12.2.rounded(.toNearestOrAwayFromZero)
-12.5.rounded(.toNearestOrAwayFromZero)
13.2.rounded(.toNearestOrAwayFromZero) //将浮点数值转换为整型数值,并舍入到最接近的允许值,如果两个值相同,则选择偶数
13.5.rounded(.toNearestOrAwayFromZero)
12.5.rounded(.toNearestOrAwayFromZero)
14.0.truncatingRemainder(dividingBy: 3.0) //以截取的方式,获得浮点数值除以指定值的余数
14.0.remainder(dividingBy: 3.0) //获得浮点数值除以指定值的余数
4.字符串(String)及对字符(Characters)的遍历
//字符串是一系列字符的集合
let hello = "hello"
let entity = "adadaad"
var hhhh = hello + "," + entity //使用加号“+”对字符串进行拼接
hhhh += "!" //使用“+=”可以将另一个字符串,追加到当前字符串的尾部
hhhh.characters.count //获得当前字符串中的字符数量
let number = 3
var combineStr = "You got \(number) star"
for character in combineStr.characters {
print(character)
}
hhhh == combineStr //通过双等号,判断两个字符串的内容是否相同
5.Swift字符串的使用详解
let intStr = "28"
Int(intStr) //给字符串常量添加类型包裹,可以将字符串强制转换为制定的类型
var message:String = "You got 3 apples"
message.hasSuffix("apples") //判断字符串的尾部,是否包含制定的字符串
message.hasPrefix("You") //判断字符串的头部,是否包含制定的字符串
message.uppercased() //将字符串转换为大写模式
message.lowercased() //将字符串转换为小写模式
message.capitalized //将字符串中的单词的首字母,转换为大写模式
message.isEmpty //判断字符串是否为空
message.components(separatedBy: " ") //将字符串按照指定的内容进行分隔,并返回一个数组
message.caseInsensitiveCompare("You got 3 apples").rawValue //将两个字符串进行比较,并且不区分大小写
message.caseInsensitiveCompare(message.uppercased()).rawValue //将当前字符串和大写后的字符串进行比较,并且不区分大小写
message.caseInsensitiveCompare("You got 3 apples.").rawValue
message.contains("apples") //判断字符串是否包含另一个字符串
message.distance(from: message.startIndex, to: message.endIndex) //判断字符串中的两个索引之间的距离
message.lengthOfBytes(using: .utf8) //获得字符串在指定编码模式下的字节长度
message.range(of: "got")?.lowerBound //分别获得指定字符串,在当前字符串中的范围的起点和结束点,两个结果都是索引类型
message.range(of: "got")?.upperBound
"北京".applyingTransform(StringTransform.toLatin, reverse: false) //获得中文字符串的拼音和声调
message.append(".") //除了使用加号,也可以使用内部方法,在字符串的尾部追加其他内容
message.append("aaaaaaddddddd")
message.insert("!", at: message.endIndex) //使用插入方法,可以往指定的位置插入特定的字符串
message.insert(contentsOf: "hi,".characters, at: message.startIndex) //使用插入方法,往字符串的头部插入一些字符
let index = message.index(message.startIndex, offsetBy: 3) //获得从字符串的头部开始,向后移动3位之后的位置
print(message[..<index])
let starIndex = message.index(message.startIndex, offsetBy: 14)
let endIndex = message.index(message.endIndex, offsetBy: -17)
let range = Range<String.Index>(starIndex ..< endIndex) //创建一个指定起始位置和终止位置的索引区域
print(message[range])
message.replaceSubrange(range, with: "stars") //将指定索引区域的字符串进行替换
message = "i have 5 stars and you have 5 stars too."
message.replacingOccurrences(of: "stars", with: "apples")
var title = "interactive tutorials for xcode and swift"
let starIndexTitle = title.index(title.endIndex, offsetBy: -16)
let endIndexTitle = title.index(title.endIndex, offsetBy: -6)
let rangeTitle = Range<String.Index>(starIndexTitle ..< endIndexTitle)
title.removeSubrange(rangeTitle) //从字符串中删除指定索引区域的内容
title.removeAll() //删除字符串中的所有内容