天天看点

iOS-初始swift(二)swift中元组,可选类型,断言,字符串,字符串的截取,数组与字典的使用

swift中元组,可选类型,断言,字符串,字符串的截取,数组与字典的使用

昨天写了关于swift中的一点知识,毕竟是第一天开始学习,感觉有点凌乱。今天写点swift 4.0的东西,这才慢慢入门,懂了一些技巧,现在说下,swift中每个版本中xcode中的语法都不太一样,看书和看视频都介绍的是swift 4.0的语法,然而我的xcode中是3.0或者4.0.于是看着2.0的视频学习4.0,哪里的语法不一样就去官网看文档,重新修正。顺便发下4.0的连接—请点击

元组的使用
//元组的使用
    func tupleDemo(){
        let returnResult=("404","网页无发现")
        let http404Erroe=returnResult
        print("返回代码为\(http404Erroe.0)--返回结果为\(http404Erroe.1)")

        let(justTheStautsCode,_)=returnResult
        print(justTheStautsCode)
    }
           
可选类型
//可选类型
    func optionType(){
        print("=============================swift 4.0============================")
        let possibleNumber="123"
        //因为构造函数有可能初始化失败,所以返回为可选类型
        let convertedNumber = Int(possibleNumber)
        //先用来判断是否存在值
        if convertedNumber != nil {
           //一旦确定存在值,则使用!来解包
            print("concertedNumber的值为\(convertedNumber!)")
        }
        //可选绑定:可以使用可选绑定来确定可选类型是否包含值
        if let actualNumber=Int(possibleNumber) {
            print("\(possibleNumber)的整数是\(actualNumber)")
        }else{
            print("\(possibleNumber)无法转换为Int类型")
        }
        if let firstNumber=Int("4"),let secondNumber=Int("42"),firstNumber<secondNumber && secondNumber<{
            print("\(firstNumber)<\(secondNumber)<100")
        }
        //隐式解包可选类型
        let possibleString:String? = "Any optionan string."
        let forceString:String = possibleString!

        let assumeString:String!="An implicatly unwarpping optional string."
        let implicatString:String=assumeString
        if assumeString != nil{
            print(assumeString)
        }
        if let definiteString = assumeString {
            print(definiteString)
        }
    }
           
断言
//错误处理
    func doWithError(){
        //断言和先决条件
        let age = -
        //当为true时候继续执行,false时候执行后面的语句,并且终止程序运行
        assert(age<,"A person's age can't be less than zero")
    }
           
字符串
//字符串
    func doWithString(){
       /*
            字符串
            swift中是String类型
            结构体,量级更轻,推荐使用
            OC是继承NSString类型
            继承自NSObject的对象

        */
        let str="HELLO WORLD"
        for c in str {
            print(c)
            print(str.count)//打印字符串的长度
        }
        //时间的格式化
        let h=
        let m=
        let s=
        let dateString=String(format:"%02d:%02d:%02d",arguments:[h,m,s])
        print(dateString)
        let dateString2=String(format:"%02d:%02d:%02d",h,m,s)
        print(dateString2)
    }
           
字符串的截取
//字符串的截取
    func subString(){
        let greeting = "Hello, world!"
        //index返回第一次字符串线的下标,下标是否为空若不为nil则将下标解包后返回,否则,去greeting.endIndex的值
        let index = greeting.index(of: ",") ?? greeting.endIndex
        let beginning = greeting[..<index]//半开范围操作符,取0到index的字符给beginning
        print("beginning的值为\(beginning)")

        //半开范围操作符的使用
        let names = ["Anna", "Alex", "Brian", "Jack"]
        let count = names.count//不包括最后一个
        print("count的值为\(count)")
        for i in ..<count {
            print("Person \(i + 1) is called \(names[i])")
        }
        //原生态的截取字符串,不包含结尾的内容还是很方便的
        let str = "Hello, world!"
        let i = str.index(str.startIndex, offsetBy: )
        str[i] // 返回字符 'o'
        let e = str.index(str.endIndex, offsetBy:-)
        str[i ..< e] // 返回 字符串 "o, worl"
    }
           
数组
//数组
    func arrayDemo(){
        /*
            swift中有一个AnyObject,表示任意对象
            OC中所有对象都继承自NSObject
            swift中的对象,可以没有任何对象
         */
        var array:[AnyObject]=["zhangsan" as AnyObject,"list" as AnyObject]
        array.append("wangwu" as AnyObject)
        array.append( as AnyObject)//会自动扩容1,2,4,8,16会成倍增加
        print(array)
        //遍历
        for s in array {
            print(s)
        }
        //数组的删,改
        array[]="dfhdj" as AnyObject
        print(array)
        array.removeFirst()
        array.remove(at: )
        print(array)

        var arrayMutable:[String]//mutablearray,定义数组并没有分配空间
        arrayMutable=[String]()//分配空间
        arrayMutable.append("张三")

//        数组的初始化方式
//        1.定义->初始化
//        var array:[String]
//        array=[String]()
//        2.
//        var array=[String]()
//        array.append("12")

        //数组的合并
        var a:[String]=["张","sdsd"]
        var b:[String]=["sdsd","www"]
        var c:[String]=["小李子",String()]
        a+=b
        c+=a
        print(a)
        print(c)
    }
           
字典的定义和json
func dictionAndJson(){
        var dict=["name":"小花","age":] as [String : Any]
        //如果key存在则覆盖
        dict["name"]="小草"
        //如果key不存在,新增
        dict["title"]="老发"
        print(dict)
        //字典的遍历
        for (k,v) in dict {
            print("key \(k)--value \(v)");
        }

    }