上方蓝字“iOS进阶宝典”关注我们
再点击右上角“...”菜单,选择“设为星标”
作者 |
CH520
来源 | 博客园资源分享中心
注释1、单行注释和OC一致。2、块注释中有与OC不同点:可以嵌套注释
常量和变量 常量:初始化后可读不可写 let
变量:初始化后可读可写 var
变量:初始化后可读可写 var
//不需要指定类型,系统会自动判断。
let teacherName = "阿林新";//自动判断为字符串,句尾分号可写可不写
let teacherName1 = 25;//自动判断为数字
let teacherAge = 26
//变量:初始化之后变量 (可读可写)
var teacherName2 = "阿林新";
teacherName2 = "阿林新最帅"
//teacherName2 = 25//编译失败---只能在同类型间赋值(初始化之后类型就已经固定)
//print(teacherName2);
用 + 合并string , + 号前后类型
var hu = huName + String (huAge)
//print(hu);
占位符 OC:%@,%d... S: \(xxx)
let huInfo2 = "阿林新\(huAge)岁"// = [NSString stringWithFormat@"阿林新%ld岁",huAge]
//print(teacherInfo2)
指定类型,类型不会乱
// .UInt 修饰的数据不能为负 ,int整数可以为负 //常量、变量名可以中文或者图标
var nameLength :UInt = 7
var string :String = "hello swift"
数值型字面量
//十进制
let tenValue = 26
//二进制
let twoValue = 0b11010
//八进制
let eightValue = 0o32
//十六进制
let sixteenValue = 0x1A
//print(tenValue,twoValue,eightValue,sixteenValue)
类型别名,类似OC中的tyPeDef
typealias tongType = Int;//把 int --> tongType
var tongAge1 : tongType = 26 // var tongAge1:Int = 26
bool值
//OC:BOOL :YES/NO 0为NO,非零即为真 ---- Swift:Bool :true / false 没有0或非零概念
var boolVaue = true
元组 ,swift新类型
// 把多个值绑定的复合值。元组中的值类型可以任意,不要求一致
var yuanzu:(Int ,String) = (100,"hello")
//访问元组中的值(类似OC类对象点相应属性)
//print(yuanzu.0)
可选类型。swift新类型
//1.如果这个类型有值,就是该值 2.如果没有值 ,这个值就是nil
//optionStr代表两种情况:1.?号后有值 等于把后值赋给optionStr 2.?后没有值,optionStr = nil 【作用:保护有些值缺失情况】
var optionStr :String? = "hello world"
//var optionStr :String?
//访问可选类型。需要 拆包(强制解析),不能直接访问
//注意,强制类型之前,一定要确保可选类有值
//print(optionStr!)
断言
//首先有一个条件,如果条件成立,代码继续运行,否则,代码执行结束
var age = 10
//var age = -10
assert(age > 0,"年龄不可能为负")//用于调制程序
运算符
一元运算符
//只需要一个变量即可完成的操作
// (1) ‘++‘ 、 ’!‘ 、’ -‘
var fuhaoNumber = -10;
var fuhaoNuner2 = -fuhaoNumber;
//print(fuhaoNumber,-fuhaoNumber);
//(2).
var addNumer = 88;
var addnumer2 = addNumer++;
var addnumer3 = addNumer--;
//print(addnumer2,addnumer3)
二元运算符
//需要两个变量即可完成的操作
//数字的计算和C是一样的。可以用 + 拼接字符串
//print("hello" + "swfit")
符合运算符
//+= ...
var a = 1;
a += 2
//print("a等于\(a)")
swift
// 新增:区间运算符 (只有两种情况)
//1...5闭区间运算符,代表[1,5],包含1和5
for tempNUmber in 1...5{
//遍历 1 -- 5
// print(tempNUmber)
}
//for tempNumber2 in 1..<5{//[1,5)
// print(tempNumber2)
//}
空盒运算符
//(??)注意:空盒运算符,前后类型一致
//适用范围:
//主要结合可选类型使用 。如果是非可选,那么空盒运算符后边的语句就短路掉了
//空盒运算符,会先判断前边的可选类型有没有值,如果为空。就会返回后边的值。反之,就会对类型进项强制解析,取出可选类型的值
//var kongheyuansuanfu :Int?
var kongheyuansuanfu :Int? = 78
var kongheValue = kongheyuansuanfu ?? 27
//print(kongheValue)
//---四。字符串 和字符
//NSString /NSMutableString
//let / var
创建字符串 带默认值
var stringValue = "class39"
stringValue = "NBClass 39"
//创建空字符串
var stringValue1 = ""
var stringValue2 = String()//推荐使用
//判断字符串是否为空
//if stringValue2.isEmpty {
print("isEmpty");
//
//}
说明字符串是值类型
// string 1 和string 2 分为存储在不同地址 同OC
var string1 = "class39"
var string2 = string1;
string1 = "NB"
//print(string1);
//print(string2)
//OC 字符串调用
var OCstring1 = NSMutableString(string: "tongli");
var OCstring2 = OCstring1;
//OCstring1.appendString("hahha")
//print(OCstring1,OCstring2);
//但是如果把不可变字符串变换为可变,发生不同情况
/*
NSMutableString *str1 = [NSMutableString stringWithString:@"123"];
NSString *str2 = str1;
[str1 appendString:@"123"];
NSLog(@"str1 -- %@",str1);
NSLog(@"str2 -- %@",str2);
*/
字符串的长度
//字符 characters ,
//var stringLength = "hello"
//stringLength.characters
//var str111 = "dog is ?"
//for tempchar in str111.characters {
print(tempchar)
//}
长度:先分解成字符,再统计多少个
print("长度是\(str111.characters.count)")
字符串的拼接(两种方法)
+ 号拼接
//var addStr = "hello" + " world"
print(addStr)
占位符
//var addStr2 = "addString \(addStr)"
//print(addStr2)
字符串的插入
// 注意区别字符串的拼接
var string111 = "hello"
var string112 = "hello"
//string111.insert("1", atIndex:string111.startIndex/*string111.endIndex*/)
//string111.insert("!", atIndex:string111.startIndex.advancedBy(2))//advance : 前进
//string111.insert("!", atIndex:string111.endIndex.advancedBy(-2))//advance : 前进
//插入字符串
//string111.insertContentsOf(" world".characters, at: string111.endIndex)
let index = string111.endIndex.advancedBy(-2).predecessor()//predecessor:前任
let index2 = string111.endIndex.advancedBy(-2)
string111.insertContentsOf(" world".characters, at: index)
string112.insertContentsOf(" world".characters, at: index2)
//print(string111)
//print(string112)
//---------
字符串的删除(截取)
//1. string --> NString,通过OC方法操作字符串
var baseStr :NSString = "123456789"
//let indexStr1 = baseStr.substringFromIndex(2)
//let indexStr1 = baseStr.substringToIndex(2)
let indexStr1 = baseStr.substringWithRange(NSMakeRange(2, 4))
//print(indexStr1)
//直接操作 ..........................................................................
var baseStr2 = "123456789"
let range = baseStr2.endIndex.advancedBy(-5) ..< baseStr2.endIndex
baseStr2.removeRange(range)
//print(baseStr2)
字符串的比较 A == B
// 必须是string类型 区别NSString
var compareStr1 = "万万没想到"
var compareStr2 = "十万个冷笑话"
if compareStr1 == compareStr2 {
// print("true")
}else{
// print("false")
}
//注意:当swift完不成需求时,可以转化为OC,再进行操作
集合性(collection)类型
//-------------------------------------------A/数组 var:可变 let :不可变
//1.创建数组
//(1)空数组
var emptyArr = [Int]()//代表数组只能存放int类型
//添加元素
emptyArr.append(3)
emptyArr.append(4)
//print(emptyArr)
//创建一个带有默认值的数组
var arr:[String] = ["apple","MiNi","HUAWEI","oppo"]
对数组编辑
//增
//1.arr.append()
//2.插入
arr.insert("vivo", atIndex: 1)
//3.合并 (两个以上数组合并)
arr += ["SAMSUNG","Nokia"]
//删除 remove
arr.removeAtIndex(4)
//修改 与OC类似,也是通过下标修改
//修改一个元素
arr[0] = "a pple"
//修改多个元素
arr[0...2] = ["MIUI" , "iOS" ,"Swift"]
//数组的遍历//不用指定类型
for temp in arr {
}
//得到元素在数组中下标 index--下标 value -- 值(数组元素) 其中enumerate()返回值是一个数组,这个数组每个人元素是元组 ,这个元组包含的是下标和数组元素值
for (index,value) in arr.enumerate() {
// print("index -- \(index)----Value -- \(value)")
}
//判断数组是否为空
if arr.isEmpty {
//
// print("this arrary is empty")
//}else{
//
// print("this arrary is not empty \(arr) \n \(arr[0])")
}
字典
创建字典
//创建一个空的字典 []中式键值对得类型
var emptyDic = [Int : String]()
//字典的设置和访问
emptyDic[1] = "iPone_1"
emptyDic[2] = "iPone_2"
//print(emptyDic[1])
//print(emptyDic[2])
创建字典,带有默认值
var cityDic : [String : String] = ["中国":"北京","美国":"华盛顿","日本":"东京","马尔代夫":"马累"]
判断字段是否为空
if cityDic.isEmpty {
}
增
//通过键值去增加
cityDic["韩国"] = "首尔"
cityDic["法国"] = "巴黎"
删除
//通过键删除
cityDic.removeValueForKey("日本")
修改
//方法一:通过键修改和添加一样。
//如果字典中不存在该键,则为添加。否则为修改
cityDic["韩国"] = "汉城"
//方法二:
cityDic.updateValue("普罗旺斯", forKey: "法国")
遍历
//for in 中间写键值对
/*
for (key,value) in cityDic {
//print("key -- \(key) ++ value --- \(value)")
}
*/
//也可以只遍历key或者value
/*
for tempKey in cityDic.keys {
// print("\(tempKey)")
}
*/
//for tempValue in cityDic.values {
//print(tempValue)
//}
//print(cityDic)
集合
1.无序性 2.互异性
//1.创建一个集合
//空
var emptySet = Set<String>()
//有默认值
var defaultSet : Set<String> = ["法拉利","兰博基尼","宝马","吉普","布加迪"]
增
defaultSet.insert("劳斯莱斯")
删除
//直接删除这个元素
defaultSet.remove("法拉利")
包含
//if defaultSet.contains("吉普") {
//print("我有这个车")
//}
遍历
//for tempCar in defaultSet {
// print("我有一辆车,叫\(tempCar)")
//}
集合的特殊运算
var set1 : Set<String> = ["1","2","3"];
var set2 : Set<String> = ["1","2","4"];
找到两个集合间相同的元素 集合交集
var result1 : Set<String> = set1.intersect(set2)
找到交集之外的元素
var result2 :Set<String> = set1.exclusiveOr(set2)
合并 并集
var result3 :Set <String> = set1.union(set2)
集合的补集
var result4 :Set<String> = set1.subtract(set2)//set1 - set2
print(result4)
print(defaultSet)
文章来源于网络,已尽可能标明作者以及来源,文章内容为作者独立观点,不代表本公众号立场,因文章侵权本公众号不承担任何法律及连带责任,如有侵权,请联系我们删除