字典
//定义:
var dict = ["abacus" : "算盘","abnormal" : "异常","hello" : "你好"]
//print(dict["abnormal"])//可空类型
//print(dict["abnormal"]!)//string 类型
//
//dict["shit"] = "狗屎"
//print(dict["shit"]!)
//print(dict)
//
////修改元素
//dict["shit"] = "牛粪"
//
////删除元素
////第一种写法
//dict.removeValueForKey("hello")
////第二种写法
////dict["hello"] = nil
//print(dict)
//
////遍历字典
//
////遍历字典中的所有值
//for value in dict.values{
// print(value)
//}
//
//for key in dict.keys{
// print("\(key)-->\(dict[key])")
//}
//
////通过元组获取字典的键值
//for (key ,value) in dict {
// print("\(key)--> \(value)")
//}
//
//
//// 哈希码(hash code)/散列码
//// MD5 / SHA-1//最经典的2个hash算法
////创建集合:可以去除重复元素
//var a: Set = [1,2,3,1,2,5]
//print(a)
//
//a.insert(100)
//a.remove(2)
////集合的交集,差集,并集
//var b: Set = [3,5,7,9,11]
//
//print(a.intersect(b)) //交集
//print(a.union(b)) //并集
//print(a.subtract(b)) //差集 a里面有b里面没有的
////判断是不是它的子集
//print(b.isStrictSubsetOf(a))
//
//
////集合的遍历
//for x in a {
// print(x,terminator:" ")
//}
////创建数组
//let b = [1,2,3,1,2,5]
//print(b)
日期,系统时间代码
et date = NSDate()//可以取到现在的系统时间
// let cal = NSCalendar.currentCalendar()//拿到现在的日历
// let hour = cal.component(.Hour, fromDate: date)
指纹解锁代码,新概念闭包的第一次应用
override func viewDidLoad() {
super.viewDidLoad()
let errpoint = NSErrorPointer()
let ctx = LAContext()
//evalutepolicy方法的第三个参数是一个函数
// 该函数有两个参数没有返回值
// 给改参数传参时可以在花括中写一个匿名函数传进去
// 该匿名函数通常也称之为闭包(closure)
if ctx.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: errpoint) {
ctx.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: "请输入指纹进行支付", reply:
{ (isOk, err) -> Void in
if isOk {
print("支付成功")
}
else {
print("指纹验证失败!请输入密码")
}
})
}
else {
print("设备不支持指纹识别")
}
}
函数的几种写法
//函数的参数名
//函数名(外表参数名 内部参数名: 类型,外部参数名 内部参数名: 类型)
//可以使用_来作为外部参数名表示省略外部参数名
//func myMin(a x:Int, y:Int) -> Int {
// return x < y ? x : y
//}
////函数调用时要写函数的外部参数名
//print(myMin(a: 3,y: 5))
// 定义函数
// func 函数名(参数列表) -> 返回类型{函数的执行体}
// 调用swift函数时,在默认情况下从第二个参数开始需要写函数名
// 如果调用函数的时候没有给该函数参数可以给它赋个默认值
//func sayHello(personName: String,alreadyGreeted: Bool = false) -> String {
// if alreadyGreeted {
// return "怎么又是你," + personName + "!"
// }
// else {
// return "你好," + personName + "!"
// }
//
//}
//
//// 调用函数
//// 函数名(参数值)
//print(sayHello("王大锤"))
//let str = sayHello("王大锤",alreadyGreeted: true)
//print(str)
//函数的可变参数列表(参数的个数是任意多个)
//func sum(nums: Int...) ->Int {
// var total = 0
// for num in nums {
// total += num
// }
// return total
//}
//
//print(sum())
//print(sum(999))
//print(sum(1,2,3))
//
//可以使用元组(tuple)让函数一次返回多条数据
//func minMax(array: [Int]) -> (min: Int, max: Int)? {
// if array.isEmpty{
// return nil
// }
// var currentMin = array[0]
// var currentMax = array[0]
//
//
// for value in array[1.. currentMax {
// currentMax = value
// }
// }
//
//
// return (currentMin, currentMax)
//}
//
//if let b = minMax([1,3,5,7,9,11,13,15,17]){ //处理可空类型的最好方法 若为空 函数就不会执行
// print(b.min) // print(b.0)
// print(b.max) // print(b.1)
//}
//
//func swap(inout a: Int, inout _ b: Int) {
//// (a,b) = (b,a)
// let temp = x
// x = y
// y = temp
//}
//
//var x = 5 ,y = 10
////函数调用的传参都是传值
//swap(&x,&y)
//print("x = \(x)")
//print("y = \(y)")
func swap(var x: Int, var _ y: Int) {
(x,y) = (y,x)
}
var x = 5 ,y = 10
//函数调用的传参都是传值
swap(x,y)
print("x = \(x)")
print("y = \(y)")
//inout - 输入输出参数(不仅将数据传入函数还要从函数中取出数据)
//func createX(inout x: Int ) {
// x = 1000
//}
//
//var x = 1
//createX(&x)
//print(x)