美文网首页
iOS-Swift基础语法

iOS-Swift基础语法

作者: 长衣貌 | 来源:发表于2018-06-29 20:38 被阅读0次

    1./初体验

    //: Playground - noun: a place where people can play
    
    // 1.导入框架
    //#import <UIKit/UIKit.h>
    import UIKit
    
    
    // 2.定义一个标识符
    // int a = 10;
    // swift中定义标识符:必须制定该标识符是一个常量还是一个变量
    // var(变量)/let(常量) 标识符的名称 : 标识符的类型 = 初始化值
    var a : Int = 10;
    let b : Double = 3.14;
    a = 29;
    // b = 3.11 错误写法
    
    
    // 3.语句结束后可以不跟;
    // 前提:一行只有一条语句,如果一行中有多条语句,则需要使用;分割
    var m : Int = 20
    let n : Double = 3.44
    
    
    // 4.打印内容
    // NSLog(@"%d", a)
    print(a)
    print("hello world")
    

    2./常量和变量的使用注意

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.在开发中优先使用常量,只有在需要修改时,在修改成var
    
    
    // 2.常量本质:保存的内存地址不可以修改,但是可以通过内存地址拿到对象,之后修改对象内部的属性
    //UIView *0x100 = UIView alloc] init];
    //view = UIView alloc] init];
    //view.backgroundColor = uiCOlor redColor];
    
    let view : UIView = UIView()
    //  view = UIView() 错误写法
    view.backgroundColor = UIColor.redColor()
    
    

    3./创建对象

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.创建UIView对象并且制定frame
    let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
    
    // 2.设置UIView的属性
    view.backgroundColor = UIColor.blueColor()
    
    // 3.给view对象内部添加子控件
    // 3.1.创建子控件
    // swift中使用枚举: 1.枚举的类型.具体的类型 2. .具体的类型
    let btn : UIButton = UIButton(type: .ContactAdd)
    
    // 3.2.设置btn的位置
    btn.center = CGPoint(x: 50, y: 50)
    
    // 3.3.将子控件添加到View中
    view.addSubview(btn)
    
    

    4./数据类型

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 类型推导
    // var a : Int = 30
    var a = 30
    
    // 可以通过:option + 鼠标左键,查看一个标识符的类型
    let b = 3.14
    
    

    5./基本运算

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    let m = 32
    let n = 3.14
    
    // Swift中没有隐式转化,不会将整形自动转成浮点型
    // let result = m + n 错误写法
    // 将整型转成浮点型
    let result = Double(m) + n
    // 将浮点型转成整型
    let result1 = m + Int(n)
    
    

    6./逻辑分支(if - else if - 三目)

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.if的使用
    // 1> if后面的()可以省略
    // 2> 判断句不再有非0即真.必须有明确的Bool值:true/false
    let a = 10
    
    if a != 0 {
        print("a不等于0")
    } else {
        print("a等于0")
    }
    
    // 2.if elseif的使用
    let score = 88
    
    if score < 0 || score > 100 {
        print("没有意义的分数")
    } else if score < 60 {
        print("不及格")
    } else if score < 80 {
        print("及格")
    } else if score < 90 {
        print("良好")
    } else if score <= 100 {
        print("优秀")
    }
    
    // 3.三目运算符
    let m = 40
    let n = 30
    
    var result = 0
    
    //if m > n {
    //    result = m
    //} else {
    //    result = n
    //}
    
    result = m > n ? m : n
    
    print(result)
    
    
    
    

    7./逻辑分支(guard)

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.guard必须用在函数
    let age = 20
    
    //func online(age : Int) {
    //    if age >= 18 {
    //        if 带了身份证 {
    //            if 带了钱 {
    //                print("可以上网")
    //            } else {
    //                print("不可以上网,回家拿钱")
    //            }
    //        } else {
    //            print("不可以上网,回家拿身份证")
    //        }
    //    } else {
    //        print("不可用上网,回家去吧")
    //    }
    //}
    
    func online(age : Int) {
        // 如果条件成立,者会执行后面的代码块
        // 如果条件不成立,则会执行{}中的语句,并且{}中必须跟上
        guard age >= 18 else {
            print("未成年不能上网")
            return
        }
        
        guard 带了身份证 else {
            print("不可以上网,回家拿身份证")
            return
        }
        
        guard 带了钱 else {
            print("回家拿钱")
            return
        }
        
        print("留下来上网")
    }
    

    8./逻辑分支(switch)

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.基本用法
    let sex = 0
    
    // 0:男 1:女 其他:其他
    
    // 1> switch可以不跟() 2> case语句结束后可以不跟break,默认系统会加
    
    switch sex {
    case 0:
        print("男")
        // fallthrough
    case 1:
        print("女")
    default:
        print("其他")
    }
    
    // 2.基本用法的补充:
    // 1>如果希望一个case中出现case穿透,那么可以在case语句结束后跟上fallthrough
    // 2>case后面可以跟多个条件,多个条件以,分割
    switch sex {
        case 0, 1:
            print("正常人")
        default:
            print("其他")
    }
    
    // 3.switch可以判断浮点型
    let a : Double = 3.14
    
    //if a == 3.14 {
    //    print("π")
    //} else {
    //    print("非π")
    //}
    
    switch a {
    case 3.14:
        print("π")
    default:
        print("非π")
    }
    
    // 4.switch可以判断字符串
    let m = 20
    let n = 30
    let opration = "+"
    
    var result = 0
    
    switch opration {
    case "+":
        result = m + n
    case "-":
        result = m - n
    case "*":
        result = m * n
    case "/":
        result = m / n
    default:
        print("非法操作符")
    }
    
    // 5.switch可以判断区间
    let score = 93
    
    switch score {
    case 0..<60:
        print("不及格")
    case 60..<80:
        print("及格")
    case 80..<90:
        print("良好")
    case 90...100:
        print("不错噢")
    default:
        print("不合理的分数")
    }
    

    9./循环(for)

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.普通的for循环
    //for (int a = 0; i < 10; i++) {
    //}
    
    // ()可以省略
    for var i = 0; i < 10; i++ {
        print(i)
    }
    
    // 2.forin写法:区间遍历
    for i in 0..<10 {
        print(i)
    }
    
    // 3.forin写法:但是不需要用到下标值
    // 如果不需要用到下标值,可以使用_来代替
    for _ in 0..<10 {
        print("hello world")
    }
    
    

    10./循环(while - do while)

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.while循环
    // 1> while后面的()可以省略 2>没有非0(nil)即真
    var a = 10
    
    while a > 0 {
        a--
        print(a)
    }
    
    
    // 2.do while循环
    // 1> 类型while循环的差别 2>do需要换成repeat
    repeat {
        a++
        print(a)
    } while a < 10
    
    

    11./字符串的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.定义字符串
    let str = "hello world"
    
    
    // 2.遍历字符串中字符
    for c in str.characters {
        print(c)
    }
    
    
    // 3.字符串的拼接
    // 3.1.字符串之间的拼接
    let str1 = "小码哥"
    let str2 = "IT教育"
    // NSString stringwithFormat:@"%@%@", str1, str2]
    let result = str1 + str2
    
    // 3.2.字符串和其他标识符之间的拼接
    let age = 18
    let name = "why"
    let height = 1.88
    
    //NSString stringwhithFor
    // 拼接其他标识符的格式: \(标识符的名称)
    let info = "my name is \(name), age is \(age), height is \(height)"
    
    // 3.3.字符串的格式化: 音乐播放器
    let min = 3
    let second = 04
    //let timeStr = "0\(min):0\(second)"
    let timeStr = String(format: "%02d:%02d", arguments: [min, second])
    
    
    // 4.字符串的截取
    let urlString = "www.520it.com"
    
    // 将String类型转成NSString类型 string as NSString
    let header = (urlString as NSString).substringToIndex(3)
    let middle = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
    let footer = (urlString as NSString).substringFromIndex(10)
    

    12./数组的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.数组的定义
    // 不可变数组(let)和可变数组(var)
    // 1>不可变数组
    let array = ["why", "lmj", "lnj", "yz"]
    
    // 2>可变数组
    // var arrayM = Array<String>()
    var arrayM = [String]()
    
    
    
    // 2.对可变数组的操作(增删改查)
    // 2.1.添加元素
    arrayM.append("why")
    arrayM.append("yz")
    arrayM.append("lmj")
    arrayM.append("lnj")
    
    
    // 2.2.删除元素
    arrayM.removeAtIndex(0)
    arrayM
    
    
    // 2.3.修改元素
    arrayM[1] = "why"
    arrayM
    
    
    // 2.4.获取某一个下标值的元素
    arrayM[0]
    
    
    // 3.遍历数组
    // 常见
    for i in 0..<arrayM.count {
        print(arrayM[i])
    }
    
    for name in arrayM {
        print(name)
    }
    
    
    // 不常见
    for i in 0..<2 {
        print(arrayM[i])
    }
    
    for name in arrayM[0..<2] {
        print(name)
    }
    
    
    // 4.数组的合并
    //for name in array {
    //    arrayM.append(name)
    //}
    //arrayM
    
    // swift中如果两个数组类型是完全一致的,可以相加进行合并
    let resultM = arrayM + array
    
    

    13./字典的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.字典的定义
    // 1>不可变字典(let)
    // 注意:在swift中无论是数组还是字典都是使用[],但是如果[]中存放的是元素,编译器会认为是一个数组.如果[]中存放的是键值对,编译器会认为是一个字典
    let dict = ["name" : "why", "age" : 18, "height" : 1.88]
    
    // 2>可变字典(var)
    // var dictM = Dictionary<String, AnyObject>()
    var dictM = [String : AnyObject]()
    
    
    // 2.对可变字典的操作
    // 2.1.添加元素
    // dict["weight"] = 60 错误写法
    dictM["name"] = "why"
    dictM["age"] = 18
    dictM["heihgt"] = 1.88
    dictM["weight"] = 75
    
    
    // 2.2.删除元素
    dictM.removeValueForKey("name")
    
    
    // 2.3.修改元素
    // 注意:如果有对应的key,则修改对应的value,如果没有对应的key,则添加对应的键值对
    dictM["age"] = 30
    dictM
    
    
    // 2.4.获取元素
    dictM["weight"]
    
    
    
    
    // 3.遍历字典
    // 3.1.遍历所有的key
    for key in dictM.keys {
        print(key)
    }
    
    // 3.2.遍历所有的value
    for value in dictM.values {
        print(value)
    }
    
    // 3.3.遍历所有的key/value
    for (key, value) in dictM {
        print(key)
        print(value)
    }
    
    
    
    // 4.合并字典
    // 注意:字典即使类型一直也不可以先加合并
    let tempDict : [String : AnyObject] = ["phoneNum" : "+86 110", "sex" : "男"]
    
    //let resultDict = tempDict + dictM
    
    for (key, value) in tempDict {
        dictM[key] = value
    }
    
    dictM
    
    

    14./元组的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    let userArray = ["why", 18, 1,88]
    userArray[0]
    let userDict = ["name" : "why", "age" : 18, "height" : 1.88]
    userDict["name"]
    
    // 元组的基本写法
    let userInfo = ("why", 18, 1.88)
    userInfo.0
    userInfo.1
    userInfo.2
    
    // 给每一个元素起别名
    let userInfo1 = (name : "why", age : 18, height : 1.88)
    userInfo1.name
    userInfo1.age
    userInfo1.height
    
    
    // 别名就是变量的名称
    let (name, age, height) = ("why", 18, 1.88)
    name
    age
    height
    
    

    15./可选类型的基本使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 类中所有的属性在对象初始化时,必须有初始化值
    class Person : NSObject {
        var name : String?
        var view : UIView?
    }
    
    // 1.定义可选类型
    // 1>普通定义可选类型的方式
    // var name : Optional<String>
    // 2>语法糖
    var name : String?
    
    // 2.给可选类型赋值
    name = "why"
    
    
    // 3.从可选类型中取值
    // Optional("why")
    print(name)
    // 从可选类型中取值:可选类型!-->强制解包
    //print(name!)
    
    
    // 4.注意:如果可选类型中没有值,那么强制解包程序会崩溃
    // 强制解包是非常危险的操作:建议在解包前先判断可选类型中是否有值
    if name != nil {
        print(name!)
        
        print(name!)
        
        print(name!)
    }
    
    
    // 5.可选绑定
    // 1> 判断name是否有值,如果没有值,则不执行{}.
    // 2> 如果有值,则对可选类型进行解包,并且将解包后的值赋值给前面的常量
    //if let tempName = name {
    //    print(tempName)
    //}
    
    if let name = name {
        print(name)
        print(name)
        print(name)
        print(name)
    }
    
    

    16./可选类型的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    let urlString = "http://www.520it.com"
    
    // 1.普通写法
    let url : NSURL? = NSURL(string: urlString)
    if url != nil {
        let request = NSURLRequest(URL: url!)
    }
    
    // 可选绑定
    if let url = url {
        let request = NSURLRequest(URL: url)
    }
    
    // 可选绑定的简介写法
    if let url = NSURL(string: urlString) {
        let request = NSURLRequest(URL: url)
    }
    
    

    17./函数的基本使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.没有参数没有返回值
    func about() -> Void {
        print("iPhone7s Plus")
    }
    
    func about1() {
        print("iPhone7s")
    }
    
    about()
    
    let view : UIView
    
    // 2.有参数没有返回值
    func callPhone(phoneNum : String) {
        print("打电话给\(phoneNum)")
    }
    
    callPhone("+86 110")
    
    
    // 3.没有参数有返回值
    func readMessage() -> String {
        return "吃饭了吗?"
    }
    
    print(readMessage())
    
    
    // 4.有参数有返回值
    func sum(num1 : Int, num2 : Int) -> Int {
        return num1 + num2
    }
    
    sum(20, num2: 30)
    

    18./函数的使用

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    // 1.内部参数和外部参数
    // 内部参数:在函数内部可以看到的参数名称,称之为内部参数
    // 外部参数:在函数调用时,可以看到的参数,成之为外部参数
    // 默认情况下从第二个参数开始,既是内部参数也是外部参数
    // 如果希望将第一个参数也声明称外部参数,只需要在标识符前加上外部参数的名称即可
    func sum(num1 num1 : Int, num2 : Int) -> Int {
        return num1 + num2
    }
    
    
    // 函数的重载:函数名称相同,参数不同(1.参数的类型不同 2.参数的个数不同)
    
    func sum(num1 : Int, num2 : Int, num3 : Int) -> Int {
        return num1 + num2 + num3
    }
    
    
    
    // 2.默认参数
    func makeCoffee(coffeeName : String = "拿铁") -> String {
        return "制作了一杯\(coffeeName)咖啡"
    }
    
    makeCoffee("雀巢")
    makeCoffee("猫屎")
    
    makeCoffee()
    
    
    // 3.可变参数
    func sum(nums : Int...) -> Int {
        var result = 0
        
        for num in nums {
            result += num
        }
        
        return result
    }
    
    sum(12, 30, 40)
    sum(44, 20, 30, 44, 55, 66)
    
    
    // 4.引用参数
    var m = 20
    var n = 30
    
    // 注意:默认情况形参都是常年
    //func swapNum(var m : Int, var n : Int) {
    //    let temp = m
    //    m = n
    //    n = temp
    //}
    // swapNum(20, n: 30)
    
    // 如果形参前面有inout,则需要传递指针到函数内
    func swapNum(inout m : Int,inout n : Int) {
        let temp = m
        m = n
        n = temp
    }
    
    swapNum(&m, n: &n)
    
    print("m:\(m) n:\(n)")
    
    // 5.函数的嵌套使用(不常用)
    func test() {
        
        func demo() {
            print("demo")
        }
        
        print("test")
        
        demo()
    }
    
    test()
    
    

    19./类的定义

    //: Playground - noun: a place where people can play
    
    import UIKit
    
    class Person : NSObject {
        var name : String?
        var age : Int = 0
        var height : Double = 0.0
    }
    
    let p = Person()
    
    // 注意:赋值不是调用set方法,直接拿到属性给属性赋值
    p.name = "why"
    p.age = 18
    p.height = 1.88
    
    

    相关文章

      网友评论

          本文标题:iOS-Swift基础语法

          本文链接:https://www.haomeiwen.com/subject/ooczyftx.html