玩儿转Swift——学习笔记(持续更新)

来源:互联网 发布:海关数据工作 编辑:程序博客网 时间:2024/05/21 14:38

最近在学习IOS开发,将笔记记下!

  1. 常量和变量

    • let - constants 常量
let maxNum =32
  • var - variables 变量
var index = 0
  • 同时声明多个变量
var x=0.0,y=0.0,z=0.0
  • 类型可以推导出来,也可以显式的声明
var index = 0 //这里是一个整形var str:String = "123"  //这是一个字符串
  • 基本类型
    Int(整型)
    Double,Float(浮点数)
    String(字符串)
    Bool(布尔类型)

  • 数字类型
    十进制
    二进制 0b101
    八进制 0o5
    十六进制 0x5

  • 可以用科学计数

let float_a = 0.012let float_b = 1.2e-2  //值为0.012
  • 数字可以用下划线隔开
let bigNum_b = 1_000_000let bigNum_c = 1_0000_0000
  • 类型转换
let num_a:Int = 1let num_b:Double = 1.3232let num_c:Double = num_b + Double(num_a)  //此处需要强制转换
  1. 布尔类型与if语句

    • if后面可以不用加括号,但是大括号是必须的。

    • 条件不能为其他类型,必须为布尔类型

let isTrue = trueif isTrue{    println("is true") }else{    println("is false")}
  1. 元组 Tuples
    • 将多个不同的值集合位一个数据
var registrationResult = (true,"慕课女神""女"let (isRegisterSuccess,nickname,gender) = registrationResultisRegisterSucss   //此处就为truenickname          //"慕课女神"gender            //"女"可以这样取值registrationResult.0   //此处就为trueregistrationResult.1   //"慕课女神"registrationResult.2   //"女"
  • 通过下划线忽略部分数值
let (isRegisterSuccess,_,_) = registrationResult
  1. Optionals 可选值

    • 或者是一个值,或者是没有值
    • 没有值的时候是nil
var a:Int?a                //此时是nila = 12           //此时是(Some 12)a!               //此时是12 通过!解包
  • Optional Binding直接被解包
var age:Int? = 18if let yourAge = age{    pringln("\(yourAge)")  }
  1. 基础运算符

    • 赋值操作
var b = 1var a = b
  • 加减乘除,求余(模)
let a = 5let b = 3var c = 0 a + ba - ba * ba / b        //此处除数不能为0,求余也不能为0a % bInt.max      //整型的最大值Int.min      //整型的最小值
  • “++”,”- -“自加自减
var c = 0c++c--c += 2 
  • 比较操作符(==,!=,>,<,===,!==)

6.nil聚合运算符
- a必须是Optional,b需要和a解包后的类型相同

a ?? b              //a != nil ? a : b
  1. 区间运算符与for-in
[a,b] a...b                //闭区间[a,b) a..<b                //前闭后开for index in 0..< array.count{    array[index];           //index是一个常量}
  1. 逻辑运算符
a               //非a || b            //或者a && b            //并且
  1. String 和 Character
//字符串声明var str1= "hello"          //可变字符串let str2 = "world"         //不可变字符串var str3 = ""var str4 = String()str1.isEmpty               //判断字符串是否为空,这里为falsefor c in str1{    println(c)             //将每个字符打印出来}单独字符var ch:Character = "a"str1.append(ch)            //helloa//不能使用str1 += ch,字符串之间可以使用count(str1)        //计算出字符串的长度//Unicode\u{1F496} //swift 计数1, OC计数2;
  1. String基本操作
var name = "第二章,字符串的运算法"var string = "hello world"//字符串可以==比较name == string           //false//通过字典序进行字符串大小判断let str1 = "abc"let str2 = "d"str2 > str1               //truename.hasPrefix("第二章") //判断是否包含前缀truename.hasSuffix("运算法") //判断是否包含结尾falsestring.uppercaseString  //转换成大写HELLO WORLDstring.lowercaseString  //转换成小写hello world

11.导入foundation使用String更多字符串功能

import Foundationstr.capitalizedString                 //单次首字母大写str.uppercaseString                   //所有字母大写str.lowercaseString                   //所有字母小写str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())                   //去掉两边的空格str.stringByTrimmingCharactersInSet(NSCharacterSet.(charactersInString: " !"))           //去掉两边的空格和叹号str.componentsSeparatedByString(" ") //按空格分割字符串成单词str.componentsSeparatedByCharactersInSet(NsCharacterSet(charactersInString:" !-"))            //各种字符分割字符串str.join(["1", "2", "3"])           //用str来连接数组中的元素str.bridgeToObjectiveC()              //转换成ObjectiveC字符串对象

12.String.Index,Range

//range 查早字符串子字符串范围var str="Welcome to Play Swift! Step by Step learn Swift language from now!"str.rangeOfString("Step")           //{some "23..<27"}str.rangeOfString("Step",options:NSStringCompareOptions.BackwardsSearch)                    //从后向前搜索 {some31..<35}str.rangeOfString("welcome",options:NSStringCompareOptions.CaseInsensitiveSearch)           //忽略大小写搜索{ some0..<7}//索引 str.startIndexstr.endIndexlet strRange = Range<String.Index(start:str.startIndex,end:str.endIndex)   //新建一个range//索引定义let startIndex:String.Index = str.startIndexlet endIndex:String.Index = advance(str.startIndex,10)//索引和 range 组合 可以对字符串 添加删除 替换

13.数组的初始化

ar array =["1","2","3","4"]    //数组类型相同 var array1:[String] = ["1","2","3","4"]var Array3:Array<String>= ["1","2","3","4"]//创建空数组var array4 = [Int]()        //0 elements 0个元素var str = String()          //调用类对象 var array5 = Array<String>()//可用 array =[] 清空数据 当时数据类型已经确定array=[String]()array=Array<String>()//数组元素添加 array.append()array6=[Int](count:10,RepeatValue:0)   //初始化重载 10个为0的元素被创建var array7 = [2,2,4]var array8= array6+array7              // 结果为10个0然后2 2 4 猜测等同与array8=array6.append(7)

14.数组基本操作

//第一种隐式地声明,后两种显式地声明var array = ["A","B","C"]var array1:[String] = ["A","B","C"]var array2:Array<String> = ["A","B","C"]//修改数组中的数据array[0] = "D"array//写一个空数组并给它赋值var array3 = [Int]()var array4 = Array<String>()var array5:[Int] = []array5.append(2)array5//清空数组的值并重新赋值。注意:清空数组但不会改变数组可以存储的类型array = []array.append("a")array//将一个数组的值赋成几个一样的值array4 = [String](count: 5, repeatedValue: "A")//加(合并)一个数组array3.append(1)var array6:Array<Int> = [2,3,4,5]var array7 = array3 + array6

15.字典的初始化

//字典意义通过 键快速找到值 如同C++ JAVA中的Map 可 HashMap- - 字典是无序的var dictionary =[1:"A",2:"B",3:"C"]//键:值 Key:Value//字典定义:var dict<Int,String>[Int:String][String:String]var course =[76:"课程1",77:"课程2",128:"课程3"]var course2:Dictionary<Int,String>=[76:"课程1",77:"课程2",128:"课程3"]var course3:[Int:String]=[76:"课程1",77:"课程2",128:"课程3"]//定义个空字典var dict = Dictionary<Int,String>() var dict2=[Int:Sring]() //字典的清空 如同array 去掉声明关键字vardict=[:]

16.字典的基础操作

//统计有多少项键值对dict.count//返回是否为空dict.isEmpty//获取制定key的value值返回可选类型dict[key] //添加键值对dict[newKey] = "new Value"//值可以重复dict[oldKey] = "new Value"//返回将要修改的key对应的原值dict.updateValue("value", forKey:key) //移除一个键值对返回被删的值dict.removeValueForKey(key)//快速遍历for (key, value) in dict//字典key的数组dict.keys //字典value的数组dict.values//强制转换成数组Array(dict.keys) [Int](dict.keys)

17.循环结构

for-in 循环的应用场景:遍历区间: for i in 0...99遍历字符串: for c in str遍历数组: for item in arr / for (index, item) in enumerate(arr)遍历字典: for (index, item) in dict不知道需要循环多少次,使用 while 循环。比如,查找。

18.选择结构

//1. condition 条件是不需要加()//2. statement 即使只有一句话 也要加 {}if condition{    statements}else if condition{    statements}else{    statements}//1. switch不需要显示的写break,所以判断多个值用逗号分割//2. case可以是任何类型switch char{    case "a","A":        println("Great");    case "B":        println("Just so-so");    defalut:        println("It's bad");}

19.switch语句的高级用法

//可以case加区间case 0..<100://可以使用元组case (Int, Int) ://wherecase (x, y) where x=y:// 元组加区间case (-2...2, -2...2)://switch 可以进行选择判断、可以进行区间 切必须涵盖所有的情况。可以使用fallthrough进行通过本次判断

20.控制转移和二位数组

//1.allthrough下面的case不能声明变量//2.break跳出循环体//3.break跳出当前switch判断//4.continue跳出当前操作继续循环//5.给循环一个标签,可以通过跳出该标签所示循环直接跳出多层循环mainloop:for i in 100{    for j in 10{        break mainloop     }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇手脚起湿疹怎么办 嘴巴破皮了怎么办 小便刺痛阴唇红肿怎么办 集成墙面挂照片怎么办 苹果电脑网页游戏打不开怎么办 苹果6plus发热怎么办 玩手游手机太卡怎么办 苹果七发烫厉害怎么办 苹果手机延迟高怎么办 王者荣耀总是卡怎么办 王者荣耀卡屏怎么办 王者荣耀网络延迟怎么办 荣耀8手机卡了怎么办 荣耀v10有点卡怎么办 荣耀10有点卡怎么办 8g内存吃鸡会崩怎么办 玩看门狗很卡怎么办 拼多多人数不够怎么办 玩cf想吐怎么办 玩手机头晕恶心怎么办 玩手机头疼恶心怎么办 看手机想吐怎么办 英雄联盟取名后怎么办 王者荣耀改名重复怎么办 刺激战场改名重复怎么办 省钱快报忘记密码怎么办 手机直播网速卡怎么办 触手tv直播黑屏怎么办 酷狗id密码忘记怎么办 打游戏网络不稳定怎么办 电脑打字法没了怎么办 家庭版密钥专业版系统怎么办 win7应用程序不能启动怎么办 win7用户密码忘记了怎么办 win7用户密码忘了怎么办 windows开不了机怎么办 网卡被卸载了怎么办 win7注销黑屏了怎么办 w7密码忘了怎么办 笔记本电脑键盘进水了怎么办 笔记本键盘进水了怎么办