zoukankan      html  css  js  c++  java
  • swift初体验

    // 1.导入框架
    // #import <UIKit/UIKit.h>
    import UIKit


    // 2.定义标识符
    // 注意:在Swift中如果打算定义`标识符`,必须制定该标识符是一个变量还是一个常量
    // 如果定义一个变量:使用var来修饰
    // 如果定义一个常量:使用let来修饰
    // int a = 10;
    let a : Int = 10
    // a = 20 错误写法

    var b : Double = 1.414
    b = 2.5


    // 3.语法结束后不需要加;(一行代码中只有一条语句)
    // 但是开发过程中不建议一行中有多条语句
    let m : Int = 23
    var n : Double = 3.14


    // 4.Swift中如何打印`内容`
    // NSLog(@"%d", a)
    print(a)

    // NSLog(@"hello world") OC:@[@"why", @"yz"] Swift:["why", "yz"]
    print("hello world")

    // 注意:
    // 1.在开发中优先使用常量,只有在需要修改时,才将let修改成var
    let π : Double = 3.14
    // π = 3.15 错误写法

    // 2.常量的含义是标识符类保存的内存地址不可以修改
    // 但是可以通过内存地址拿到对象,之后修改对象内部的属性
    // UIView *view = [[UIView alloc] initWithFrame:];
    // view.backgroundColor = [UIColor redColor]
    // 2.1.在Swift中创建对象:类名字()
    let view : UIView = UIView()
    // view = UIView()

    // 设置UIView的背景颜色
    view.backgroundColor = UIColor.redColor()


    // 了解:后续会详细讲解
    // 3.Swift中创建对象的练习
    let view1 : UIView = UIView(frame: CGRectMake(0, 0, 100, 100))
    view1.backgroundColor = UIColor.yellowColor()
    view1.frame = CGRect(x: 0, y: 0, 50, height: 50)

    // 创建UIButton
    // UIButton alloc] initWithFrame
    // let btn : UIButton = UIButton(frame: <#T##CGRect#>)
    // UIButton alloc] initWithType:枚举
    // 枚举的使用:1.枚举名称.具体的类型 2. .具体的类型
    let btn : UIButton = UIButton(type: .ContactAdd)

    view1.addSubview(btn)


    // 1.整型(Int)和浮点型(Double)
    let a : Int = 3
    var b : Double = 1.414


    // 2.类型推导:定义一个标识符时如果有直接赋值,那么编译器会根据后面赋值的类型推导出前面标识符的类型
    // 技巧:可以通过 option + 鼠标左键 查看一个标识符的类型
    let m = 20
    let n = 3.14

    let view = UIView()

    // 3.Swift中的基本运算
    // OC中有隐式转化:如果将一个整型和一个浮点进行运算,会自动将整型转成浮点型之后再进行运算
    // 注意:1.Swift中没有隐式转化 2.不同类型之间不能进行运算

    // Swift中的类型转化
    // 将Int类型转成Double类型:Double(m)
    let result : Int = Int(Double(m) + n)

    // 将Double类型转成Int类型:Int(n)
    let result1 = m + Int(n)

    // 1.switch的基本使用

    // 规范:0: 1: 其他:其他

    let sex = 1

    // OC的区别:1.switch后面可以不跟() 2.case结束可以省略break(默认会帮你加上),不会产生case穿透

    // 如果希望出现case穿透:可以在case语句结束后加`fallthrough`

    switch (sex) {

    case 0:

        print("")

        fallthrough

    case 1:

        print("")

    default:

        print("其他")

    }

    // 2.基本使用的扩充

    // 补充:case后面是可以跟多个条件,多个条件之间以,分割

    switch sex {

    case 0, 1:

        print("正常人")

    default:

        print("其他")

    }

     

    // 3.switch支持其他数据类型

    // 3.1.浮点型

    let a = 3.14

     

    if a == 3.14 {

        print("aπ")

    } else {

        print("a不是π")

    }

     

    // 3.2.字符串类型

    let m = 29

    let n = 32

     

    let opration : String = "+"

     

    var result = 0

     

    //if opration == "+" {

    //    result = m + n

    //} else {

    //    

    //}

    switch opration {

    case "+":

        result = m + n

    case "-":

        result = m - n

    case "*":

        result = m * n

    case "/":

        result = m / n

    default:

        print("不合理的操作符")

    }

     

    print(result)

     

     

    // 3.3.区间

    let score = 88

     

    //if score < 0 || score > 100 {

    //    print("不合理的分数")

    //} else if

     

    switch score {

    case 0..<60:

        print("不及格")

    case 60..<80:

        print("及格")

    case 80..<90:

        print("良好")

    case 90...100:

        print("唉哟,不错哦")

    default:

        print("不合理的分数")

    }

    //guard满足时执行下一个判断条件,不满足时执行else(跟if有点相反) 

    func online(age : Int) {

        // 1.判断是否大于等于18

        guard age >= 18 else {

            print("年龄不符合")

            return

        }

        

        // 2.判断是否带了身份证

        guard 带了身份证 else {

            print("回家拿身份证")

            return

        }

        

        // 3.判断是否带了钱

        guard 带了钱 else {

            print("回家拿钱")

            return

        }

        

        print("注册账号")

        print("交钱")

        print("上网")

    }

     

    online(age)

    // 1.for循环

    // 1.1.常规写法(类型OC常规写法)

    // for (int i = 0; i < 10;i++) {}

    for var i = 9; i >= 0; i-- {

        print(i)

    } 

    // 1.2.forin写法:区间遍历

    for i in 0...10 {

        print(i)

    }

     

    // 如果在for循环中不需要用到i,可以使用_来代替

    for _ in 0..<10 {

        print("hello world")

    }

     

    // 2.while循环

    // 1.while后面不需要() 2.判断句必须有明确的真假(Bool)

    var a = 10

    while a > 0 {

        print(a)

        a--

    }

     

    // 3.do while循环

    // Swiftdo while循环是repeat来代替do

    repeat {

        print(a)

        a++

    } while a < 10

     

    // 1.定义字符串

    let str : String = "hello world"

     

    // 2.遍历字符串

    for c in str.characters {

        print(c)

    }

     

    // 3.字符串的拼接

    // 3.1.字符串之间的拼接

    let str1 = "xiao"

    let str2 = "ma"

    let str3 = "ge"

    // NSString stringwithformat:@"%@%@%@", str

    let result = str1 + str2 + str3

     

    // 3.2.字符串和其他标识符之间的拼接

    let age = 18

    let name = "why"

    let height = 1.88

    // 在字符串中拼接其他标识符:"(标识符的名称)"

    let userInfo = "my name is (name), my age is (age), my height is (height)"

     

    // 3.3.字符串的格式化()

    let min = 3

    let second = 14

    let timeStr = String(format: "%02d:%02d", arguments: [min, second])

     

     

    // 4.截取字符串

    let urlStr = "www.520it.com"

    // String类型转成NSString类型: (urlStr as NSString)

    let qianzhui = (urlStr as NSString).substringToIndex(3)

    let houzhui = (urlStr as NSString).substringFromIndex(10)

    // NSMakeRange(4, 5)

    let range = NSRange(location: 4, length: 5)

    // CGRectMake(0, 0, 100, 100) CGRect(x: 0, y: 0, 100, height: 100)

    let middle = (urlStr as NSString).substringWithRange(range)

    // 定义元组

    // 应用场景:函数的返回(如果一个函数有多个返回值)

    // 基本的写法

    let errorInfo = (404, "Not Found")

    errorInfo.0

    errorInfo.1

     

    // 给元素起别名

    let errorInfo1 = (errorCode : 404, errorMsg: "Not Found")

    errorInfo1.errorCode

    errorInfo1.errorMsg

     

    // 标识符就是对应的元素的别名

    let (errorCode, errorMsg) = (404, "Not Found")

    errorCode

    errorMsg

     

     

  • 相关阅读:
    VS Code 快捷键(中英文对照版)
    Linux下SVN提交时强制写日志
    如何搞定SVN目录的cleanup问题和lock问题
    Unity3D中利用Action实现自己的消息管理(订阅/发布)类
    Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件
    Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板
    Unity3D热更新之LuaFramework篇[01]--从零开始
    Unity UI性能优化技巧
    Unity中雾效的开启
    解决Unity中模型部件的MeshCollider不随动画一起运动的问题
  • 原文地址:https://www.cnblogs.com/xieyunqq/p/5211873.html
Copyright © 2011-2022 走看看