Swift 常识篇
2016-01-28 15:54
309 查看
创建一个Swift文件(用于测试的)
打开Xcode->OS X->Command Line Tool
1)在swift中导入头文件只需要import就可以了,不需要“”和<>
2)在Swift开发中自定义的文件都不需要导入头文件可以直接使用
3)在swift中代码不用再写分号
4)playground是一个演示性的,不能用来开发,只能用来测试某个功能模块
var表示一个变量
let 表示一个常量相当于用const修饰
运算符两边的空格要一致,要空格都空格,不空格都不空,例如下面这种,错误写法
2.指明数据类型:在变量后面加上冒号,在冒号后面写上类型
swift中数据类型是自动类型推断的,根据等号右边的值判断是什么类型,赋值给等号左边的变量(也有可能是常量)
3.使用的ASCII编码方式
a.在C和OC中变量命名规则:有数字,字母,下划线组成,其中数字不能开头可以使用$
b. 在swift中什么都可以当做变量名,使用的是Unicode编码方式
1.强制类型转换:想要转换的类型()
2.创建一个字符串类型的变量
3.创建一个bool类型
2.在swift中方法的调用使用点语法
在swift中if语句的()不用写
3.字符串的拼接
4.计算字符串的长度
5.字符串的插值
在swift没有格式化输出符,所有需要原样输出的都是用\(),在()内写上需要输出的内容
6.大小写转换
OC:数组里面只能存放对象,可以不是同一类的对象
swift:(官方)只能存放同一种类型的数据(指明类型的时候)
用var修饰的是可变数组,let修饰的是不可变数组
在swift中数组用[]的形式表示,也可以用Array()初始化
完整写法
let arr3:Array = [1,2,3,4]
还是用下标取元素
不可变数组不仅仅是数组本身的长度不能改变,而且数组里面的元素也不能改变
2.数组常用的方法
1)添加
2)插入
3)删除
4)范围性取值
5)遍历for没有括号
使用元组同时对多个变量进行赋值
如果在原组中,某个值不想要,使用下划线代表
2.在swift中的常用方法
1)修改:在swift中通过[]的形式找到key对应的值
2)删除
3)获取字典的keys和Values
取出的是swift里面的数据格式,不能直接使用
要初始化一个数组
1.不存在非0即为真,if语句必须是严格的bool类型,swift类型可以自动推断,所以不允许模糊的东西存在,if后面的()可以省略不写
2.switch
1)必须要有default
2)每个case里面至少要写一句代码
3)每个case里面自带break
case可以是一个范围,而且可以交叉,如果两个case交叉只走第一种情况
case 还可以双重判定
2.以冒泡排序为例,展示如何有优化代码
1)判断是否为正确结果
2)跳出结果
//在枚举变量中,要想获取到真实的值,需要在后面添加一个rawValue
func是函数的关键字
func 函数名 (参数列表)->返回值类型
{
函数体
}
1.定义一个函数
2.函数的调用
sayHi(“帅哥”)
3.在swift中通常使用元组返回多个值
func funcName()->(a:Int,b:Int)
{
let A=1,B=2
return (A,B)
}
funcName().a
4.外部参数名
从Xcode7开始只有第一个参数没有外部参数名
在原来的内部参数名前面可以添加一个外部参数名
5.传数值和传地址
传数值
传地址(inout关键字可以将实参地址传递给形参)
6.函数可以嵌套
打开Xcode->OS X->Command Line Tool
1)在swift中导入头文件只需要import就可以了,不需要“”和<>
2)在Swift开发中自定义的文件都不需要导入头文件可以直接使用
3)在swift中代码不用再写分号
4)playground是一个演示性的,不能用来开发,只能用来测试某个功能模块
一·常量和变量
1.变量:定义变量的实质是开辟内存空间var a = 1
var表示一个变量
let b = 2
let 表示一个常量相当于用const修饰
运算符两边的空格要一致,要空格都空格,不空格都不空,例如下面这种,错误写法
var c =3
2.指明数据类型:在变量后面加上冒号,在冒号后面写上类型
swift中数据类型是自动类型推断的,根据等号右边的值判断是什么类型,赋值给等号左边的变量(也有可能是常量)
var d:Int = 4
3.使用的ASCII编码方式
a.在C和OC中变量命名规则:有数字,字母,下划线组成,其中数字不能开头可以使用$
b. 在swift中什么都可以当做变量名,使用的是Unicode编码方式
var 帅哥 = "男的" var 美女 = "⬅️坤坤"
二 数据类型
var e:Float = 1.111 var i:Int = 5
1.强制类型转换:想要转换的类型()
var g:Int = i + Int(e)
2.创建一个字符串类型的变量
var h:Character = "Z"
3.创建一个bool类型
var bool:Bool = true
三 字符串
1.创建一个空的字符串var str_empty = "" var str1_empty = String()
2.在swift中方法的调用使用点语法
在swift中if语句的()不用写
if str_empty.isEmpty { print("str_empty是空字符串") }
3.字符串的拼接
var str1 = "⬅️你真" var str2 = "帅" let str3 = str1+str2
4.计算字符串的长度
print(str3.characters.count)
5.字符串的插值
在swift没有格式化输出符,所有需要原样输出的都是用\(),在()内写上需要输出的内容
print("a=\(a)")
6.大小写转换
let str4 = "hello world" str4.uppercaseString str4.lowercaseString
四 数组
1.C:数组只能存放同一种类型的数据OC:数组里面只能存放对象,可以不是同一类的对象
swift:(官方)只能存放同一种类型的数据(指明类型的时候)
用var修饰的是可变数组,let修饰的是不可变数组
在swift中数组用[]的形式表示,也可以用Array()初始化
var array = [1,2,3] var arr = [1,1.1,2,3] var arr1 = [1,"2.2",3]
完整写法
let arr3:Array = [1,2,3,4]
还是用下标取元素
print(array[0])
不可变数组不仅仅是数组本身的长度不能改变,而且数组里面的元素也不能改变
2.数组常用的方法
1)添加
array.append(4)
2)插入
array.insert(5, atIndex: 4)
3)删除
array.removeAtIndex(4)
4)范围性取值
array[0...2] = [4,4,4] print(array)
5)遍历for没有括号
for value in array { print(value) }
五元组
1.元祖就是元素的组合,在swift中用来修饰一个复杂的变量,类似于C中的结构体var person = ("a",25,"GuangZhou") print("person的年龄\(person.1)")
使用元组同时对多个变量进行赋值
如果在原组中,某个值不想要,使用下划线代表
var (name,_,address) = person print(name) print(address)
六 字典
1.<>括号里面写的是键值对类型var dic:Dictionary<String,String> = ["k1":"v1","k2":"v2","k3":"v3"]
2.在swift中的常用方法
1)修改:在swift中通过[]的形式找到key对应的值
dic["k1"] = "V1" dic.updateValue("value1", forKey: "k1") print(dic)
2)删除
dic.removeValueForKey("k3") print(dic)
3)获取字典的keys和Values
dic.values
取出的是swift里面的数据格式,不能直接使用
要初始化一个数组
Array(dic.values)
七 流程控制
var j = 1
1.不存在非0即为真,if语句必须是严格的bool类型,swift类型可以自动推断,所以不允许模糊的东西存在,if后面的()可以省略不写
if j == 1 { print("j和1相等") }
2.switch
1)必须要有default
2)每个case里面至少要写一句代码
3)每个case里面自带break
var s = 2 switch s { case 1: print("1") case 2,4://两个case情况一样,用逗号隔开 print("2") //fallthrough表示向下贯穿一个case //fallthrough要写在每个case的最后,因为遇到fallthrough就会向下贯穿 fallthrough case 3: print("3") default: print("default") }
case可以是一个范围,而且可以交叉,如果两个case交叉只走第一种情况
var s1 = 10 switch s1 { case 1...15: print("1...15") case 5...20: print("5...20") default: print("default") }
case 还可以双重判定
switch s1 { case 1...15 where s == 2: print("满足情况") default: print("default") }
八循环语句
1.for循环的()不用写了2.以冒泡排序为例,展示如何有优化代码
1)判断是否为正确结果
2)跳出结果
var arrr = [2,1,3,5,4] aa: for var i = 0;i < 5-1;i++ //aa是for循环的标签 { var flag = 1 for var j=0;j<5-i-1;j++ { if arrr[j]>arrr[j+1] { var temp = 0 temp = arrr[j] arrr[j] = arrr[j+1] arrr[j+1] = temp flag++ } } if flag == 1 { //第一种方式 //说明在整个一次大循环中,没有发生交换,说明已经出来正确的结果了 // break aa //第二种方式 i = 5 } }
九 枚举
enum Season:String{ case spring = "春天" case summer = "夏天" case winner = "冬天" case autumn = "秋天" }
//在枚举变量中,要想获取到真实的值,需要在后面添加一个rawValue
print(Season.summer.rawValue)
十函数
函数的格式(语法)func是函数的关键字
func 函数名 (参数列表)->返回值类型
{
函数体
}
1.定义一个函数
func sayHi (name:String)->String { return name + " " + "hello" }
2.函数的调用
sayHi(“帅哥”)
3.在swift中通常使用元组返回多个值
func funcName()->(a:Int,b:Int)
{
let A=1,B=2
return (A,B)
}
funcName().a
4.外部参数名
func PersonInfo(name:String,age:Int,address:String)->String { return name + " " + "\(age)" + " " + address }
从Xcode7开始只有第一个参数没有外部参数名
在原来的内部参数名前面可以添加一个外部参数名
PersonInfo("mm", age: 20, address: "GuangZhou") func personInfo1 ( Name name:String,Age age:Int,Address address:String)->String { return name + "\(age)" + address } personInfo1(Name: "gg", Age: 20, Address: "GuangZhou")
5.传数值和传地址
传数值
func changValue (var num:Int) { num++ print(num) } var num1 = 3 changValue(num1)
传地址(inout关键字可以将实参地址传递给形参)
func changValue1(inout num:Int) { num++ print(num) } var num2 = 3 changValue1(&num2) print(num2)
6.函数可以嵌套
func test1() { func test2() { print("test2") } test2() print("test1") } //调用函数 test1()
相关文章推荐
- Android之使用Http协议实现文件上传功能
- 使用OS Watcher监控操作系统
- 什么是Mac OS X?跟Linux有什么区别
- Apple Swift学习教程
- mysql集群之MMM简单搭建
- 介绍 Fedora 上的 Swift
- 通晓网络测试常用命令
- DOS命令全集(一)
- DOS下内存的配置
- SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(中)
- SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(上)
- 基于SQL Server OS的任务调度机制详解
- mac系统OS X10.10版本安装最新5.7.9mysql的方法
- DOS下的必备工具
- SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)
- Nodejs学习笔记之测试驱动
- asp中command的在单条记录时,有些字段显示为空的问题
- Delphi Command模式
- DOS 下的批处理文件