美文网首页
Swift语言基础

Swift语言基础

作者: 单线程Jack | 来源:发表于2019-08-12 11:02 被阅读0次

    //Swift 与 OC 的区别

    /*
    
        *可以不写分号
    
        *Swift严格要求代码规范,=号前后要有空格
    
        *打印使用print
    
        *使用var修饰变量 使用let修饰常量
    
        *在不指定变量(常量)类型时,根据所赋的值自动匹配
    
        *在playground中运行更直观
    */
    
    /*命名规范
    
        *以数字、字母、下划线组成,不以数字开头
    
        *不能使用系统关键字
    
        *可以使用`关键字`命名
    
        *全面支持编码格式
    
    */
    
    /***************** 基础数据类型 ************************/
    
    //1.整型
    
    let number = 10
    
    let anumber : Int = 20
    
    Int.max
    
    Int.min
    
    Int32.max
    
     
    
    //2.浮点型
    
    //不指定时,默认是Double类型
    
    let bNum = 3.14
    
    var floatNum : Float = 3.14159265357
    
    var doubleNum : Double = 3.141592653572345687890
    
     
    
    //3.布尔
    
    var boolValue = true
    
    var aBoolValue = 3 > 7
    
     
    
    //4.字符 & 字符串
    
    //1)字符
    
    var charValue : Character = "a"
    
     
    
    //2)字符串
    
    var stringValue = "张三"
    
    var stringValue1 = "包宿"
    
    stringValue + stringValue1
    
     
    
    //5.可选类型
    
    /*
    
        *有值返回对应的值,无值返回nil
    
        *定义常量(变量)必须指定类型
    
        *问号?与定义的类型之间不可以加空格的
    
     
    
    */
    
    var optionvalue : String?
    
    var aOptionValue : String? = "20"
    
     
    
    //强制解析
    
    /*
    
        *强制解析:可选变量有值时使用
    
        *使用方法:变量(常量)+ !
    
    */
    
    if aOptionValue != nil {
    
        aOptionValue = aOptionValue! + "16"
    
    }
    
     
    
    //6.元组
    
    var httpError = (404, "NotFound", (1, 2, 3, 4))
    
    httpError.0
    
    httpError.1
    
    httpError.2.1
    
     
    
    var (code,error) = (404, "NotFound")
    
    code
    
    error
    
     
    
    var 李四 = (name:"李四", age: 17, sex : "不详")
    
    李四.name
    
    李四.age
    
    李四.sex
    
     
    
    /******************Array Dictionary string*********************/
    
    //1.字符串
    
    //1)定义
    
    var aStrValue = "这是一个字符串"
    
    var bStrValue : NSString = "这也是一个字符串"
    
    //2)定义空的字符串
    
    var cStrValue = ""
    
    var dStrValue = String()
    
    //3)判断两个字符串是否一致
    
    let 班长 = "大哥"
    
    var 学委 = "二哥"
    
    班长 == 学委
    
    //4)拼接
    
    学委 + "❤️" + 班长
    
    学委 += 班长
    
    学委
    
    //打印变量
    
    print(班长)
    
    print(班长,学委)
    
    print("\(班长)"+"\(学委)")
    
    print("\(班长)❤️\(学委)")
    
    //5)判断是否为空
    
    班长.isEmpty
    
    //6)大小写转化
    
    let 🐱 = "Mao"
    
    🐱.uppercaseString
    
    🐱.lowercaseString
    
     
    
    //2.数组
    
    //1)定义
    
     
    
    //Swift 使用var修饰可变数组,使用lei修饰不可变数组
    
    var arrayValue = [1,2,3,4,"One"]
    
    var arrValue : Array<Int> = [1,2,3,4]
    
    var ocArrValue : NSMutableArray = [1,2,3,4]
    
    var ocEmptyValue : NSMutableArray = NSMutableArray()
    
     
    
    //2)添加元素
    
    //Swift数组
    
    arrValue += [1,3]
    
    arrValue.append(10)
    
    //oc
    
    ocArrValue.addObject(100)
    
    ocArrValue.insertObject(9, atIndex: 2)
    
    ocArrValue.removeObject(9)
    
     
    
    //3)删除元素
    
    //ocArrValue.removeAllObjects()
    
    //arrValue
    
    //arrValue.removeAtIndex(2)
    
    //arrValue
    
    //arrValue.removeRange(2...5)
    
    //arrValue.removeRange(1..<3)
    
    //arrValue
    
     
    
     
    
    //4)个数
    
    arrValue.count
    
     
    
    //5)遍历
    
    arrValue
    
    for item in arrValue
    
    {
    
        print(item)
    
    }
    
    //倒序输出
    
    for item in arrValue.reverse(){
    
        print(item)
    
    }
    
    //元组遍历
    
    for (index,value) in arrValue.enumerate()
    
    {
    
        print("\(index):\(value)")
    
    }
    
     
    
    //3.字典
    
    //1)初始化
    
    var emptyDic = Dictionary<Int, String>()
    
     
    
    var dicValue : Dictionary<Int, String> = [1:"李三❤️李四",2:"学委❤️班长",3:"张三❤️李四",4:"大锤❤️小锤",5:"🐱❤️🐶",6:"小明❤️小红",7:"三❤️四",8:"屌丝❤️左手❤️右手"]
    
     
    
    //2)添加修改
    
    //如果字典存在Key,则更改对应的值,没有此Key,则添加此键值对
    
    dicValue[9] = "男孩❤️女孩"
    
     
    
    //3)个数
    
    dicValue.count
    
     
    
    //4)移除
    
    dicValue.removeValueForKey(5)
    
    //字典中键值对,都是由hash组成的下标
    
    var index = dicValue.indexForKey(4)//获取字典下标
    
    dicValue.removeAtIndex(index!)
    
    dicValue
    
    //2.0新添加的方法
    
    //dicValue.removeAll()
    
     
    
     
    
    //5)遍历
    
    for value in dicValue.values{
    
        print(value)
    
    }
    
    for key in dicValue.keys
    
    {
    
        print(key)
    
    }
    
    for keyValue in dicValue{
    
        print(keyValue)
    
    }
    
     
    
    /*********运算符*************/
    
    var a = 10
    
    var aa = 20
    
    a + aa
    
    a - aa
    
    a * aa
    
    a / aa
    
     
    
    //取余
    
    var 🐟 = 9 % 4
    
    var 🐟🐟 = (-9) % 4
    
    var 🐟🐟🐟 = (-9) % 4
    
    var 🐟🐟🐟🐟 = (-9) % (-4)
    
     
    
    //OC达不到的
    
    var 🐟🐟🐟🐟🐟 = 9 % 2.5
    
    var 🐟🐟🐟🐟🐟🐟 = 9.5 % 2
    
    var 🐟🐟🐟🐟🐟🐟🐟 = 9.5 % 2.5
    
     
    
    //与(&&) 或 (||) 非(!)
    
    var 与 = 3 > 6 && 3 < 2
    
    var 或 = 3 > 6 || 3 > 2
    
    !与
    
    var aaa = 3 > 4 ? 3 : 4
    
    //1.if else
    
    if a > aa{
    
        
    
    }else if a == aa{
    
        
    
    }else{
    
        
    
    }
    
    //2.for循环
    
    var sum = 0
    
    for var i = 0; i < 100; i++ {
    
        sum += i
    
    }
    
    sum
    
     
    
    sum = 0
    
    for j in 1..<100{
    
        sum += j
    
    }
    
    sum
    
     
    
    sum = 0
    
    while sum < 100{
    
        sum++
    
    }
    
    sum
    
     
    
    sum = 0
    
    //swift 2.0之前 repeat关键字依旧为do
    
    repeat {
    
        sum++
    
    }while sum < 100
    
    sum
    
     
    
    //4.Switch case 不用写break case可以写两个条件
    
    var score = "A"
    
    switch score {
    
        case "A":
    
        print("优秀")
    
        fallthrough//贯穿,强行执行到下一个case
    
        case "B":
    
        print("良好")
    
        
    
    default:
    
        print("不及格")
    
        
    
    }
    
     
    
    var one = 16
    
    switch one {
    
    case 13...20 where one == 16:
    
        print("符合条件")
    
        fallthrough//贯穿,强行执行到下一个case
    
    case 15...20:
    
        print("不完全符合条件")
    
    default:
    
        print("不符合条件")
    
    }
    
     
    
    var point = (1,0)
    
    switch point{
    
    case (_,0):
    
        print("在x轴上")
    
    case (0,_):
    
        print("在y轴上")
    
    default:
    
        print("不在频道上")
    
    }
    
     
    
     
    
    /*************函数****************/
    
    //1.无参无返
    
    func sayHello(){
    
        print("嗨,菇凉")
    
    }
    
     
    
    sayHello()
    
     
    
    //2.有参无返
    
    //Swift2.0之后,默认第二个参数 内部参数外部参数相同
    
    //Swift2.0之前,若想内部参数外部参数保持一致,需要在内部参数前加"#"
    
    func getName(name : String,age : Int){
    
        print("\(name)今年\(age)岁了")
    
    }
    
    getName("何老师", age: 18)
    
     
    
    //Swift2.0之后,若想第一个参数的内部参数有外部参数,需要在内部参数前,给其起个别名
    
    func getName2(personName name : String, presonNameAge age : Int){
    
        print("\(name)今年\(age)岁了")
    
    }
    
    getName2(personName: "李四", presonNameAge: 5)
    
     
    
    //默认参数
    
    //默认参数,函数定义时,需要在内部参数前加"_"+空格,并且在参数类型后赋值
    
    //调用时,可以不给默认参数传值,不传值,则用声明时的初始值,传值,则使用所传值
    
    func getName3(name : String,_ name1:String = "屌丝"){
    
        print(name + "❤️\(name1)")
    
    }
    
     
    
    getName3("王军岐")
    
    getName3("吴帅", "王军岐")
    
     
    
     
    
     
    
    //3.有参有返
    
    func getName1(name : String) ->String{
    
        return name;
    
    }
    
     
    
    //多返回值,实质返回一个元组
    
    func getName4(name : String, age : Int, sex : String) ->(name1 :String, age1 : Int, sex1 : String)
    
    {
    
        return (name,age,sex)
    
    }
    
    var person = getName4("李涵", age: 18, sex: "boy")
    
     
    
    //4.无参有返
    
    func getName5() ->String{
    
        return "这是一个无参有返的函数"
    
    }
    
    var getName = getName5()
    
     
    
    //inout
    
    var count = 20
    
    func changeCount(inout number : Int){
    
        number = 40
    
    }
    
    count
    
    changeCount(&count)
    
    count
    
     
    
    //不确定参数个数
    
    func sumNum(numbers:Int...)->Int{
    
        var sum = 0
    
        for i in numbers{
    
            sum += i
    
        }
    
        return sum
    
    }
    
    var sumValue = sumNum(1,2,3,4,5,6,7,8,9)
    
     
    
     
    
    /*******************结构体  类******************/
    
    //1)结构体
    
    struct Student{
    
        var name : String?
    
        var age : Int?
    
        //构造器
    
        init(name : String,age : Int){
    
            self.name = name
    
            self.age = age
    
        }
    
    }
    
     
    
    var student = Student(name: "张志超", age: 18)
    
    student.name
    
    student.age
    
     
    
    student.name! + "为什么每天这么困"
    
     
    
    //类
    
     
    
    class Person {
    
        //定义属性
    
        var name :String?
    
        var age : Int?
    
        var sex : String?
    
        
    
        //实例方法
    
        func description()->String{
    
            return "这是一个实例方法"
    
        }
    
        //类方法
    
        class func description()->String{
    
            return "这是一个类方法"
    
        }
    
        
    
        //构造器
    
        init(name : String,age : Int,sex : String){
    
            self.name = name
    
            self.age = age
    
            self.sex = sex
    
        }
    
        deinit{
    
            //移除通知
    
            //代理置空
    
        }
    
    }
    
    var 大黄 = Person.init(name: "小伟", age: 58, sex: "未知")
    
    var 大哥 = Person(name: "小可爱", age: 48, sex: "未知")
    
     
    
    //调用实例方法
    
    大黄.description()
    
    //调用类方法
    
    Person.description()
    
     
    
    //继承
    
     
    
    class Teacher: Person {
    
        override func description() -> String {
    
            return "重写父类方法"
    
        }
    
    }
    
     
    
    var teacher = Teacher(name: "涛哥", age: 30, sex: "男")
    
    teacher.name
    
    teacher.age
    
    teacher.description()
    
     
    
    //代理
    
     
    
    protocol MyDelegate{
    
        
    
        func sayHello()->String
    
    }
    
     
    
    class cat: MyDelegate {
    
        func sayHello() -> String {
    
            return "海,海拉"
    
        }
    
    }
    
    //签协议
    
    class Student1: Person,MyDelegate {
    
        func sayHello() -> String {
    
            return "海,海拉"
    
        }
    
    }
    
     
    
    //闭包,匿名函数 相当于OC中的block
    
     
    
    //(参数列表)->返回值类型 in 代码段
    
    var block = {(str :String ,str1 :String) -> String
    
        in
    
        return str + str1
    
    }
    
     
    
    var result = block("Love","You")
    
     
    
    result
    

    相关文章

      网友评论

          本文标题:Swift语言基础

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