iOS中 Swift初级入门学习(一)
2015-11-25 08:32
489 查看
/ // Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation // Swift当中的输出函数 // println Swift2.0 之前使用的输出函数, 可以自动换行 // print Swift2.0之前自动换行, Swift2.0之后可以自动换行 println("Hello, World!") // 单行注释和以前一样 // 块注释 /* 块注释 /* 可以嵌套注释 */ */ /* // 如何声明一个常量 规则: let 常量名: 类型 = 值 // Swift当中我们不必再代码语句的结尾处加分号, 但是如果一行中写了几句代码, 那么代码之间就要用分号隔开 let a: Int = 5; let b: Int = 10 // 如何声明一个变量 var 变量名: 类型 = 值 // Character 字符型 var c: Character = "a" println(c) // 常量的值不可以发生改变, 变量的值可以改变 // a = 10 错误 c = "b" // 命名规则 // 我们可以使用大部分的特殊符号, 中文也可以, 数字, 字母, 下划线, 但是非法的Unicode编码, 数字符号, 标志符是不可以的 let 小韩哥: String = "好帅" <pre name="code" class="plain">// 类型推断 // Swift 会根据我们给常量或者变量赋的值来推断我们常量或者变量的类型 let 常量 = 10 // 根据推断: 常量是int类型 var 变量 = 20 // 变量是一个int 类型 // Swift是一门类型安全的语言, 我们不能给一个类型的变量赋给另一个类型 // 变量 = 19.5 错误 变量 = 30 println(变量) // 数值字面量 // 20, 10 , 字符串 // 0b //let ab = 1011 //println(ab) let ab = 0b1010 println(ab) // 八进制值字面量 let ac = 0o17 println(ac) // 十进制字面量, 默认的数组就是十进制 let ad = 18 // 十六进制字面量 0x 开头 let ae = 0xabc println(ae) // 字符串插值 // Swift当中没有占位符, 我们可以以字符串插值的形式当做占位符 \(), 括号中存放常量或者变量的名字 let af = "hello,wold" println("af = \(af)") // 类型转换 let 浮点型: Float = 15.9 let 整型: Int = 20 // 不同类型不可以直接做运算 // 浮点型转化成Int类型 Int() // Int类型转化为浮点型 Float() let result = Int(浮点型) + 整型 // 打印最大值, 最小值 println(Int8.max) println(Int16.min) println(UInt8.max) println(UInt8.min) // 类型别名的使用 typealias newInt32 = Int32; println(newInt32.max) // 布尔值 只有true false var 布尔值 = true println(布尔值) 布尔值 = false println(布尔值) // 元组 // 多个不同类型的值组合成的一个复合值 let 元组 = ("小明",28,95.5); // 取出元组里面的值 // 通过元组名. 下标的形式取出元组的内容 println(元组.0) println(元组.2) // 如果我们声明元组的时候,给元组里面的内容前加一个名字, 那么我们就可以通过 元组名.元素名字 的方式取出元组里面的内容 let 小韩 = (身高: 170,年龄:25 ) println(小韩.身高,小韩.年龄) // 元组的分解 let (身高,年龄) = 小韩 println(身高,年龄) // 可选类型 // 可选类型是用来处理值缺失的情况, 一个变量声明成可选类型的话, 证明这个变量可能有值,也可能未空 // 声明一个可选类型 var str: String? println(str) str = "hello,good morning" println(str) // 我们要使用可选类型变量值的话,需要把可选类型里面的值解析出来, 方式:变量名 + ! ,这种方式叫做强制解析 var aStr = "95588" var aIntofOptinal = aStr.toInt() println(aIntofOptinal) // 强制解析之前我们要确保变量有值, 如果没有值, 我们不能在可选类型后面 + !来强制解析 var result1 = aIntofOptinal! + 10 println(result1) // 隐式解析类型 // 为了我们使用可选类型的时候, 不用发每次都用强制解析的方式取值, 我们可以在声明变量的时候在类型标注后面不用? 而用!的形式 // for example var 隐式解析类型: Int! println(隐式解析类型) 隐式解析类型 = 20; println(隐式解析类型) // 断言 // 起到断点调试的作用 var bStr: String? bStr = "忘赋值了" assert(bStr != nil, "字符串不为空") println(bStr!) */ /* // 运算符 // 根据操作数的不同, 运算符可以分为一元, 二元, 三元运算符 // + - * / % // + let a = 3; let b = 5 var c = a + b println("c = \(c)") // - c = b - a println(c) // * c = a * b println("c = \(c)") // / c = b / a println("c = \(c)") // % c = a % b println("c = \(c)") // 自增, 自减运算 // ++ var aNumber = 10 // ++ 在前取新值, ++ 在后取旧址 , 不管++在变量的前面, 还是在变量的后面, 该变量都会自增1 let result = ++aNumber + aNumber++ + ++aNumber println("result = \(result)") println(aNumber++) // -- let result2 = --aNumber - aNumber-- + --aNumber println(--aNumber) println(result2) // 复合运算符 // += -= /= %= // += var 变量 = 10 变量 += 5 // 变量 = 变量 + 5 println(变量) // -= 变量 -= 5 println(变量) // /= 变量 /= 2 println(变量) // %= 变量 %= 1 println(变量) // 三目运算符 条件 ? 值1 : 值2 条件为真的时候取值1, 条件为假的时候取值2 let maxNumber = 5; let minNumber = 3 let result3 = maxNumber > minNumber ? maxNumber : minNumber println(result3) // 比较运算符 >, < , <= , >= ,== , != if maxNumber > minNumber { println( "\(maxNumber) 比 \(minNumber) 大") } if maxNumber < minNumber { println("\(maxNumber) 比 \(minNumber) 小") } if maxNumber <= minNumber { println("\(maxNumber) 不比 \(minNumber) 大") } if maxNumber >= minNumber { println("\(maxNumber) 不比 \(minNumber) 小") } if maxNumber != minNumber { println("\(maxNumber) 不等于 \(minNumber) ") } if maxNumber == minNumber { println("\(maxNumber) 等于 \(minNumber)") } // 逻辑运算符, 逻辑与 &&, 逻辑或 || , 逻辑非 ! // 注意 逻辑与 逻辑或 的短路现象 // 逻辑与 运算符前面条件为假, 运算符后面的语句就不走(一假即真) // 逻辑或 运算符前面条件为真, 运算符后面的语句就不走(一真即真) // 逻辑非 取反 var num = 10 if num++ == 10 || num-- > 0 { println(num) } // 空合运算符 ?? var str = "123" var num3 = str.toInt() // 判断一个可选类型, 如果为空,就给一个常量赋值 567, 如果不为空, 就取这个可选类型变量解析出来的值 // 等价于 if num3 == nil { let result = 567 println(result) } else { let result = num3! println(result) } // 等价于 let result4 = num3 == nil ? 567 : num3! println(result4) let result5 = num3 ?? 567 println(result5) // 区间运算符 // (a...b) 包含 a 到 b 范围内的数, 且包含 a 和 b // (a..<b) 包含 a 到 b 范围的数, 包含 a 不包含 b for 数字 in (1...9) { println(数字) } for number in (1..<9) { println(number) } */ // 字符串 // 在Swift当中没有可变字符串与不可变字符串之分, 字符串的可变与不可变只有我们用let. 还是var 来修饰有关, 如果let修饰,那么字符串不可变, var 修饰,这个字符串就可变 var str = "hello,word" // 遍历字符串中的每个字符 for 字符 in str { println(字符) } // 字符串的拼接, 我们可以直接通过运算拼接字符串 str += " = 你好世界!" println(str) // 这种方式只能拼接一个字符, 并且字符的位置在字符串的最后 let charactor : Character = "啊" str.append(charactor) println(str) // 判断字符串是否有前后缀 let aStr = "meinv.png" if aStr.hasPrefix("meinv") { println("有前缀meinv") }else{ println("没有前缀") } // 判断字符串是否有后缀 if aStr.hasSuffix(".png") { println("png格式") }else{ println("其他格式") } // 判断字符串是否为空 if aStr.isEmpty { println("字符串为空") }else{ println("字符串不为空") } // 全部大写 let resultOfStr = aStr.uppercaseString println(resultOfStr) // 全部小写 let resultOfStr1 = aStr.lowercaseString println(resultOfStr1) // 首字母大写 let resultOfStr2 = aStr.capitalizedString println(resultOfStr2) // OC里面的字符串 let bStr : NSString = "hello" let resultOfStr3 = bStr.length println(resultOfStr3) // 数组 // 通过构造方法来创建一个空数组 var array : Array<String> = Array() // 第二种 var array1 = [Int]() // 第三种 var array2 : [String] = Array() // OC里面创建数组 var array3 = NSArray() var arrayOfBook = ["***","玉女心经","玉蒲团","一路向西"] // 修改数组中的元素 arrayOfBook[3] = "西游记" for element in arrayOfBook { println(element) } // 另一种方式 for (index,value) in enumerate(arrayOfBook){ println((index,value)) } // Swift2.0之后写法 点语法 //for (不知道,不知道2) in arrayOfBook.enumerate{ // println((不知道,不知道2)) //} // arrayOfBook[0...2] = ["三国演义","水浒传","红楼梦","通讯录"] for element in arrayOfBook { println(element) } // 插入元素 arrayOfBook.insert("射雕英雄传", atIndex: 0) // 删除元素 arrayOfBook.removeLast() for element in arrayOfBook { println(element) } println(arrayOfBook.capacity) // 删除所有元素 // keepCapacity表示是否保持容量,如果参数为true的话, 同时把元素清为零,但是保留清空之前的空间, 如果参数为false 的话, 清空元素后每添加一个元素时,空间不够用时,会开辟添加上一次元素空间的2倍 arrayOfBook.removeAll(keepCapacity: false) // 判断数组是否为空 if arrayOfBook.isEmpty { println(arrayOfBook.capacity) } arrayOfBook.insert("text", atIndex: 0) println(arrayOfBook.capacity) // 字典 // C语言的创建一个空字典方式 var dict : Dictionary<Int, Int> = Dictionary() var dict2 : [String : String] = Dictionary() // OC的形式 var dict3 = NSDictionary() var studentOfDict = ["name" : "小明","age" : 18] // 遍历子典里面的所有的key for key in studentOfDict.keys { println(key) } // 遍历字典里所有的value for value in studentOfDict.values{ println(value) } // 给字典添加一个元素 studentOfDict["adress"] = "天下第一楼" println(studentOfDict) // 删除一个元素 studentOfDict.removeValueForKey("adress") println(studentOfDict) studentOfDict["age"] = nil // 遍历字典里面的key和value for (key,value) in studentOfDict { println((key,value)) }
每日更新关注:http://weibo.com/hanjunqiang
新浪微博
相关文章推荐
- 基于swift语言iOS8的蓝牙连接(初步)
- Swift 2.0学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 我的第一行Swift代码
- 运行时 #import <objc/runtime.h>
- Xcode报错:No such module SwiftyJSON
- swift willset didset get set区别
- swift基础
- iOS开发46-iOS Swift元组(Tuples)
- Swift -4 面向对象基础(上)
- iOS开发45-iOS Swift字典
- Swift 闭包表达式
- swift 深入理解Swift的闭包
- Swift学习之十四:闭包(Closures)
- swift学习笔记-1
- Swift中的反射
- 初探swift语言的学习笔记(闭包 - 匿名函数或block块代码)
- Swift类属性
- swift 随机背景色的实现
- 初探swift语言的学习笔记(闭包-匿名函数或block块代码)
- swift学习网站