iOS---初识Swift(一)
一、Swift简介
○ 2010年的夏天, 苹果公司的开发人员Chris Latten接到了一个特别的任务, 为OS X 和iOS平台开发下一代编程语言, 也就是Swift.
○ 苹果公司于2014年WWDC(苹果开发者大会) 发布的新开发语言Swift, 可与Objective-C共同运行于Mac OS和iOS平台, 用于搭建基于苹果平台的应用程序
○ 2015年的WWDC开发者大会上, 苹果公司推出了Swift2.0版本, 并且Swift完全开源
二、基本语法
//Swift中导入类库使用import, 不再使用<>或者""了
import Foundation
//Swift中的输出语句:print
print("Hello, World!")
//MARK: - 定义常量、变量
//定义常量 (使用完第一次就不能修改值)
let myGender = "女"
//myGender = "男"
//定义变量
var carName = "BMW"
carName = "Audi"
print(carName)
//MARK: - 定义常量变量: 变量类型的隐式转换
//在swift中如果定义常量变量不给定相关的类型, 它会隐式转换成给定的初值类型
let name = "Jack" //如果这样定义出来一个常量, 它会隐式转换成String类型
let name1 : String = "Rose" //如果给定类型,后边赋值的时候需要根据类型进行赋值
let age : Int = 18 //如果定义常量最好给出初始化, 定义变量可以不给初始值
var age1 : Int? //?表示age1的类型
print(age1)
//定义一个字符类型的变量
var char : Character = "A" //赋值字符类型的时候 仅需一个字母即可
//定义一个bool类型的变量 [在swift中bool类型的变量只有true活着false]
var flag : Bool = false
//MARK: - 字符串string
//(1)创建一个空的字符串
var str_empty = ""
var str1_empty = String()
//(2)判断一个字符串为空字符串
if str_empty.isEmpty {
print("str_empty is empty")
}
//(3)字符串的拼接
var str_url = "http://"
var str = "www.baidu.com"
let str_new_url = str_url + str
print(str_new_url)
print("百度网址:\(str_new_url)\n") // \(变量名)输出相关的内容[插入式取值]
//(4)获取字符串的长度
var str1: String = "dag"
print(str1.characters.count)
//(5)字符串的比较
var str2 = "MBBoy"
var str3 = "GBLW"
if str2 != str3 { // ==
print("两个字符串不相等")
}
//MARK: - 数组
//Swift数组中的元素类型必须相同
//定义一个数组
var nameArray = ["yuanyuan", "GBLW", "WYW", ]
print(nameArray)
var nameArray1 : Array<String> = ["YaQian", "XQ", "FatZhou"]
//定义一个空数组 (字符串)
let array = Array<String>()
print(array)
//访问数组中的元素
print(nameArray[1])
//向数组中添加元素
var int_array = Array<Int>()
int_array.append(520)
int_array.append(123)
print(int_array)
//使用运算符添加数组元素
int_array += [100]
int_array += [120]
print(int_array)
//使用运算符添加多个数组元素
int_array += [800, 900, 55]
print(int_array)
//插入元素到具体的位置
int_array.insert(521, atIndex: 1)
print(int_array)
//移除某个元素
int_array.removeAtIndex(4)
print(int_array)
//移除所有元素
int_array.removeAll()
print(int_array)
//MARK: - 字典
//定义一个字典类型的变量
var dic : Dictionary<String, Int> = ["a":18, "b":69, "c":38]
print(dic)
//定义空字典
var dic1 : Dictionary<String, Int> = [:]
var dic2 = Dictionary<String, Int>()
//往字典里赋值
dic["d"] = 50
print(dic)
//修改字典中的内容 (根据键值修改)
dic["a"] = 90
print(dic["a"])
//删除字典中的内容 (根据键值去删除)
dic.removeValueForKey("b")
print(dic)
//MARK: - 元组
//定义一个元组
//方法一:直接初始化一个元素 (使用swift隐式转换的特点)
let tuples = ("蓝鸥1班", ["iOS", "html5", "Android"])
print(tuples)
//方法二:显式初始化的方式
let tuplesNew : (String,Array) = ("蓝鸥8班", ["iOS", "html5", "Android"])
print(tuplesNew)
//取出元组
//第一种取值方式:直接把元组赋值给另外一个常量, 根据相关标记进行取值
let tuplesNew1 : (classroom:String, course:Array) = tuplesNew
var classInfo = tuplesNew1.classroom + tuplesNew1.course[0] + tuplesNew1.course[1] + tuplesNew1.course[2]
print(classInfo)
//第二种方式:直接根据下标取值
var classInfoNew = tuplesNew1.0 + tuplesNew1.1[0] + tuplesNew1.1[1] + tuplesNew1.1[2]
print(classInfoNew)
//MARK: - 循环
//第一种形式:
for var i = 1;i < 10;i++ {
print(i)
}
//第二种形式:
for number in 1..<10 {
print(number)
}
//第三种形式
for number in 1...10 {
print(number)
}
//while循环和repeat...while
var i = 8
while i > 0 {
i--
print(i)
}
repeat { //先执行一次循环体, 再进行相关的循环
print("我爱你们")
}while 1 < 0
//使用循环遍历数组
var animalArray = ["阿福", "pig", "cat", "tiger", "fish"]
for animal in animalArray {
print(animal)
}
//使用循环遍历字典
var animalDic = ["dog":"🐶", "pig":"🐷"]
for (key,value) in animalDic {
print("key = \(key),value = \(value)")
}
//MARK: - 分支结构 (if结构和switch格式)
//if形式的
let flag1 = true
if flag1 == true {
print("11111")
}else {
print("你们,....")
}
//switch形式使用fallthrough实现贯穿每种可能
var value = 0
switch value {
case 0:
print("0")
fallthrough
case 10:
print("10")
fallthrough
default:
print("other")
}
//特点2:case后可以使用一个范围
switch value {
case 0..<10:
print("输出0-10之间的数值")
case 10...100:
print("输出10...100的数值")
default:
print("other")
}
//特点3: case后可以使用 (let和var修饰的常量或者变量) where是否满足某种条件
switch value {
case var i where value >= 0 && value < 6:
i = 99
print(i)
default:
print("other")
}
//特点4: case后还可以匹配一个元组
let point = (10,10)
switch point {
case (10,0):
print("1111")
case (10,8):
print("2222")
case (_,10): // _ 代表可以忽略某个元素
print("3333")
case (10,10):
print("4444")
default:
print("other")
}
//MARK: - 枚举(enum)
//枚举原始类型为int类型
enum direction:Int {
case east = 0
case south = 1
case west = 2
case north = 3
}
print(direction.east.rawValue) //rawValue:找到相对应枚举的原始值
//枚举原始类型为String类型的
enum Season:String {
case spring = "春天"
case summer = "夏天"
case autumn = "秋天"
case winter = "冬天"
}
print(Season.autumn.rawValue)
//根据原始值获取枚举的类型
print(direction(rawValue: 2))
//MARK: - 函数
//表示函数的关键字: func
//函数的类型有: 四种
//1. 无返回值, 无参数
func function1() -> Void {
print("无返回值, 无参数的")
}
function1()
//2.无返回值, 有参数
func function2(name str:String) -> Void {
print(str)
}
function2(name: "lanou")
//3:有返回值, 无参数
func function3() -> String {
return "zhatian"
}
print(function3())
//4.有返回值, 有参数
func function4(num1:Int,num2:Int) -> Int {
return num1 + num2
}
print(function4(5, num2: 6))
//函数的返回值为元组类型的
func function5(num1:Int,num2:Int) -> (Int,Int,Int) {
return (num1 + num2, num1 - num2, num1 * num2)
}
print(function5(9, num2: 2))
//外部参数和内部参数
//first、second就叫做外部参数:在函数调用的时候回显示出来这两个名称
//one、two内部参数: 在函数内部使用的
//默认的情况下, 第一个外部参数在调用的时候不显示, 其余的均显示
func function6(first one:Int, second two:Int) {
print((one,two))
}
function6(first: 10, second: 2)
//如果都不想显示外部参数:"_"的作用是忽略外部参数名
func function7(one:Int,_ two: Int) {
print("忽略外部参数")
}
function7(8, 9)
//函数的嵌套
func test1() {
func test2() {
func test3() {
print("哈哈")
}
test3()
}
test2()
print("........")
}
test1()
/*
//inout修饰的参数: 会改变所传参数的值
func test(inout name:String) {
name = "MBBoy"
print(name)
}
var myName = "yuanyuan"
test(&myName)
print(myName)
*/
//var修饰的参数: 不会修改所传参数的值
func admin(var name:String) {
name = "MBBoy"
print("name = \(name)")
}
var myName = "tianxin"
print("myName = \(myName)")
admin(myName)
print("myName = \(myName)")
浙公网安备 33010602011771号