标签:
var name : Optional<String> = nil
var name : String? = nil
name = Optional("why")
name = "why" // 系统会对字符串进行包装Optional, 再进行赋值
print(name!)
1 if let name = name { 2 print(name) 3 print(name) 4 }
1 let urlString = "www.baidu.com" 2 3 let url : NSURL? = NSURL(string: urlString) 4 if let url = url { 5 let request = NSURLRequest(URL: url) 6 }
1 let path = NSBundle.mainBundle().pathForResource("123.plist", ofType: nil) 2 3 if let path = path { 4 NSArray(contentsOfFile:path) 5 }
1 //1.is的使用 2 let infoArray = ["why" , 18 , 1.98] 3 let item = infoArray[1] 4 5 //item.isKindOfClass(UIButton.self) 6 7 //string是结构体,不能用isKindOfClass 8 if item is String { 9 print("是字符串") 10 }else { 11 print("不是字符串") 12 }
1 let urlString = "www.baidu.com" 2 (urlString as NSString).substringToIndex(3)
1 let item1 = infoArray[0] 2 let name = item1 as? String 3 if let name = name { 4 print(name.characters.count) 5 } 6 简写: 7 if let name = infoArray[0] as? String { 8 print(name.characters.count) 9 }
1 let count = (infoArray[0] as! String).characters.count
}
1 // 函数的嵌套 2 let value = 55 3 func test() { 4 func demo() { 5 print("demo \(value)") 6 } 7 print("test") 8 demo() 9 } 10 demo() // 错误 必须在对应的作用域内调用 11 test() // 执行函数会先打印‘test‘,再打印‘demo‘
1 // 定义两个函数 2 func addTwoInts(a : Int, b : Int) -> Int { 3 return a + b 4 } 5 6 func multiplyTwoInt(a : Int, b : Int) -> Int { 7 return a * b 8 } 9
1 // 定义函数的类型 2 var mathFunction : (Int, Int) -> Int = addTwoInts 3 4 // 使用函数的名称 5 mathFunction(10, 20) 6 7 // 给函数的标识符赋值其他值 8 mathFunction = multiplyTwoInt 9 10 // 使用函数的名称 11 mathFunction(10, 20)
1 // 3.将函数的类型作为方法的参数 2 func printResult(a : Int, b : Int, calculateMethod : (Int, Int) -> Int) { 3 print(calculateMethod(a, b)) 4 } 5 6 printResult(10, b: 20, calculateMethod: addTwoInts) 7 printResult(10, b: 20, calculateMethod: multiplyTwoInt)
1 // 1.定义两个函数 2 func stepForward(num : Int) -> Int { 3 return num + 1 4 } 5 6 func stepBackward(num : Int) -> Int { 7 return num - 1 8 } 9 10 // 2.定义一个变量,希望该变量经过计算得到0 11 var num = -4 12 13 // 3.定义获取哪一个函数 14 func getOprationMethod(num : Int) -> (Int) -> Int { 15 return num <= 0 ? stepForward : stepBackward 16 } 17 18 // 4.for循环进行操作 19 while num != 0 { 20 let oprationMethod = getOprationMethod(num) 21 num = oprationMethod(num) 22 print(num) 23 }
1 enum <#name#> { 2 case <#case#> 3 }
1 enum Planet { 2 case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune 3 }
1 enum Direction : Int{ 2 case East = 1 , West , North , Sourth 3 } 4 //完整写法 5 let d : Direction = Direction.North 6 //简单写法:根据上下文能推导出确定的类型 7 var d1 = Direction.East 8 d1 = .West 9 10 //枚举类型的使用 11 let btn = UIButton(type: .Custom)
1 let btn = UIButton(type: .Custom) 2 3 enum Direction : String{ 4 case East = "1" 5 case West = "3" 6 case North = "6" 7 case Sourth = "9" 8 } 9 var b : Direction = .West 10 11 let a = Direction(rawValue: “6”)
1 enum Direction2 : Int{ 2 case East = 1 , West , North , Sourth 3 //只要给第一个成员赋值,会自动按照递增的方式给后面的成员赋值 4 //相当于 West = 2, North = 3, Sourth = 4 5 //注意:这种赋值方法只对整型有效,赋值其它类型无效
struct 结构体名称 {
// 属性和方法
1 class 类名 : SuperClass { 2 // 定义属性和方法 3 } 4 class Person { 5 var name : String = "" 6 var age : Int = 0 7 } 8 let p = Person() 9 p.name = "lkj" 10 p.age = 18
1 class Person { 2 var name : String 3 var age : Int 4 // 自定义构造函数,会覆盖init()函数 5 init(name : String, age : Int) { 6 // 如果在一个方法中, 属性名称产生了歧义(重名), self.不可以省略 7 self.name = name 8 self.age = age 9 } 10 } 11 // 创建一个Person对象 12 let p = Person(name: "why", age: 18) 13 14 15 class Person: NSObject { 16 var name : String 17 var age : Int 18 // 重写了NSObject(父类)的构造方法 在init前面加上override 19 override init() { 20 name = "" 21 age = 0 22 } 23 } 24 // 创建一个Person对象 25 let p = Person()
1 class Person: NSObject { 2 // 结构体或者类的类型,必须是可选类型.因为不能保证一定会赋值 3 var name : String? 4 // 基本数据类型不能是可选类型,否则KVC无法转化 5 var age : Int = 0 6 // 自定义构造函数,会覆盖init()函数 7 init(dict : [String : NSObject]) { 8 // 必须先初始化对象 9 super.init() 10 // 调用对象的KVC方法字典转模型 11 setValuesForKeysWithDictionary(dict) 12 } 13 //如果字典中某些键值对,在类中找不到对应的属性,就会报错 14 //不想让它报错,可以重写setValue forUndefinedKey key: 15 override func setValue(value: AnyObject?, forUndefinedKey key: String) { 16 } 17 } 18 // 创建一个Person对象 19 let dict = ["name" : "why", "age" : 18] 20 let p = Person(dict: dict)
1 deinit { 2 // 执行析构过程 3 }
1 class Person { 2 var name : String 3 var age : Int 4 5 init(name : String, age : Int) { 6 self.name = name 7 self.age = age 8 } 9 10 deinit { 11 print("Person-deinit") 12 } 13 } 14 15 var p : Person? = Person(name: "why", age: 18) 16 p = nil
标签:
原文地址:http://www.cnblogs.com/xiaotian666/p/5783559.html