您的位置:首页 > 移动开发 > Swift

Swift 常识篇

2016-01-28 15:54 309 查看
创建一个Swift文件(用于测试的)

打开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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 测试 os command