文章目录
前言
最近在学习swift和写项目,给我的感受,语言简洁和安全,在学习了基础的语法和一些必要的知识之后,因为OC的UI也用到了自动布局,所以也去探索了swift的自动布局库SnapKit,简单记录一下。
playground
开playground练习语法比较方便
有时候有些东西编译不出来记得
var 和 let-元组
import UIKit
var greeting = "Hello, playground"
var str = "hello"
str += "11"
print(str)
var a:Int = 1, b: String = "2", c:Double = 3.0
print(a, b, c)
print("b.count =", b.count, "sss")
var smile = "smile\n"
print(smile)
// 不能数字命名开头
//var 1x = 12;
//print(1x)
// 元组
var person:(name:String, age:Int) = ("iOS", 19)
print(person.name)
var car:(String, Int) = ("Benz", 10000)
var (theName, thePrice) = car
print(theName, thePrice)
// 匿名
// 在Swift语言中,常常使用符号“_”来表示匿名的概念,因此“_”也被称为匿名标识符。
var (theName1, _) = car
var obj: String? // 在普通类型后面添加符号“?”,即可将普通类型包装为Optional类型。
// 在Swift语言中,未做初始化的普通类型是不允许使用的
if obj == nil {
print("!obj")
}
// 在使用“!”进行Optional值的拆包操作时,必须保证要#包的值不为nil,否则程序运行会出错。可以在拆包前使用if语句进行安全判断
//声明obj为String?类型
var obj2: String? = "safe"
if obj != nil {
obj!
}
// if-let结构中也可以同时进行多个Optional类型值的绑定
// 只有所有Optional值都不为nil,绑定才会成功,代码执行才会进入if为真的代码块中
var curObj: Int? = 9
if let temp = curObj {
print(temp)
} else {
curObj = 10;
}
// 当我们明确某个变量初始时为nil,并且在之后使用之前一定会被赋值时,我们可以将其声明为隐式解析的可选值,再对这个变量进行使用,就不需要进行拆包操作了
// 声明obj4为隐式解析的变量
var obj4:Int!
obj4 = 3
// 在使用时,无须再进行拆包操作,Swift会自动帮我们拆包
print(obj4 + 1)
string-字典-数组
import UIKit
var greeting = "Hello, playground"
var str = String(describing: Int.self)
var a = Int(1.9)
var my = "jackDao"
// 符串插值方法
// \()”结构可以将其他数据类型转换为字符串类型并且插入字符串数据的相应位置,也可以进行简单的运算逻辑后将结果插入原字符串中
var myself = "my name is \(my)"
print(myself)
MemoryLayout<String>.size //16个字节 获取String类型占用的内存空间
var e:Character = "a"
var e2: [Character] = ["H",