美文网首页
Swift 基础语法

Swift 基础语法

作者: 孤独的木木 | 来源:发表于2017-04-07 11:33 被阅读0次

    1.基本定义

    //1. swift中如何导入框架import UIKit

    //2.如何定义标识符

    // swift中定义标识符必须告诉编译器是常量还是变量let声明常量、var声明变量

    //按住option键+鼠标左键查看变量的类型

    leta :Int=20//有些使用常量,(更加安全)

    varb :Double=1.44

    b=2.33

    // 3.如果一行中只有一条语句,那么该语句结束后可以不加; ,如果一行中有多条语句,那么以;分割

    //4.打印内容

    print(a)

    print(b)

    //常量的使用注意

    letm =10

    //创建一个对象

    varview :UIView=UIView()

    //view = UIView()错误的写法

    view.backgroundColor=UIColor.red

    view.frame(forAlignmentRect: )

    // Swift基本运算必须保证类型一致否则会报错因为Swift没有隐试转换

    lettempM =Double(m)//强制类型转换

    2.逻辑分支的使用

    ////增加guard

    //// 1 . if else判断语句不在有非0/nil即真,判断语句必须有明确的真假Boll-- ture/false

    //var i = 0

    //  if i > 0  {

    //   print("a > 0")

    //  } else {

    //    print("a < 0")

    //  }

    // 2 .三目运算符

    //let m = 20

    //let n = 10

    //

    //let result = m > n ? m : n

    // guard的使用2.0以后才有的有guard必须有else它必须在函数中使用里面必须要加return或break关键字

    letage =20

    leta =18

    funconline(age:Int) {

    guardage >=18else{

    print("回家找妈妈")

    return

    }

    guarda>=18else{

    print("qian")

    return

    }

    print("liu")

    }

    online(age:age)

    letsex =0

    // 1. switch后面的()可以省略,case语句结束后,break可以省略

    //switch sex {

    //case 0:

    //    print("nan")

    //

    //default:

    //    print("nv")

    //}

    //基本用法的补充

    // 1.如果系统某一个case中产生case穿透,可以在case结束后跟上fallthrough

    // 2.cass后面可以判断多个条件

    switchsex{

    case0,1,2:

    print("nan")

    default:

    print("nv")

    }

    // 3. switch还可以判断浮点型以及字符串

    leta =3.14

    varresult  =0

    switcha{

    case3.14:

    print("P")

    default:

    print("M")

    }

    letm  =10

    letn  =20

    letstr ="+"

    switchstr{

    case"+":

    result=m+n

    case"-":

    result=m-n

    default:

    print("非法操作")

    }

    //3.3 switch可以判断区间开区间0..<20 0~19闭区间0...20 0 ~20

    letscore =88

    switchscore{

    case0..<60:

    print("不及格")

    case60..<70:

    print("及格")

    case70..<80:

    print("中等")

    case80...100:

    print("优秀")

    default:

    print("不存咋")

    }

    3.循环的使用

    // for in写法

    foriin0..<10{

    print(i)

    }

    // for in写法(特殊)如果标识符不需要使用,可以使用_来代替for i in 0...9、

    //for i in 0...9 {

    //    print("hello world")

    //}

    for_in0...9{

    print("hello world")

    }

    //2.while循环使用

    vara =10

    whilea>0{

    print(a)

    a-=1

    }

    //do while 用repeat 代替

    repeat{

    a+=1

    print(a)

    }whilea<10

    1.字符串的使用

    // 1.定义字符串

    letstr ="Hello World"

    //2.遍历字符串

    forcinstr.characters{

    print(c)

    }

    //3.字符串的拼接

    letname  ="liumu"

    letname1 ="LM"

    letname2 =name+name1

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

    letage =18

    letheight =1.88

    letinfo ="my name is\(name),my age is\(age),my height is\(height)"

    //3.3拼接字符串时,字符串的格式化

    letmin =2

    letsecond =8

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

    //4.字符串的截取

    leturlString ="www.520lm.com"

    //先将它转换成NSString类型(urlString as NSString)

    letheaser = (urlStringasNSString).substring(to:3)

    2.数组的使用

    //1.定义数组

    //1.1定义不可变数组,使用let来定义,

    letarray = ["mu","huan","ming","gggg"]

    //1.2定义可变数组,使用var来定义,

    vararrayM =Array()//创建可变数组

    vararrayM1 = [String]()//创建可变数组

    //2.对可变数组操作

    //增加

    arrayM.append("ggg")

    arrayM.append("kkk")

    arrayM.append("jjj")

    arrayM.append("ggg")

    arrayM.append("kkk")

    arrayM.append("jjj")

    arrayM.append("ggg")

    arrayM.append("kkk")

    arrayM.append("jjj")

    //删除

    arrayM.remove(at:0)

    //修改

    arrayM[0] ="hjk"

    //取出

    arrayM[0]

    //3.数组遍历

    foriin0..

    print(arrayM[i])

    }

    fornameinarrayM{

    print(name)

    }

    //遍历前两个元素

    fornameinarrayM[0..<2] {

    print(name)

    }

    //4.数组合并

    letresultArr =array+arrayM//相同类型才能够相加合并

    //5.数组排序

    arrayM.sort()//升序

    3.字典的使用

    //1.定义字典

    //1.1定义不可变字典,使用let来定义,

    letdict:[String:Any] = ["name":"liumu","age":"20","height":5]

    //1.2定义可变字典,使用var来定义,

    //var dictM = Dictionary()

    vardictM = [String:AnyObject]()//初始化可变数组

    vardictMr  = [String:AnyObject]()

    //2.对可变字典的操作

    dictM["name"] ="liumu"asAnyObject?

    dictM["sex"] ="nan"asAnyObject?

    dictM.removeValue(forKey:“name")

    dictM["name"] ="lm"asAnyObject?

    dictM["sex"]

    //3.遍历字典

    forkeyindictM.keys{

    print(key)

    }

    forvalueindictM.values{

    print(value)

    }

    for(key,value)indictM{

    print(key ,"=",value)

    }

    //4.合并字典

    //即使类型一致也不能相加合并

    for(key,value)indict{

    dictM[key] = valueasAnyObject?

    }

    字典转换为数组

    你可以提取字典的键值(key-value)对,并转换为独立的数组。实例如下:

    varsomeDict:[Int:String]=[1:"One",2:"Two",3:"Three"]letdictKeys=[Int](someDict.keys)letdictValues=[String](someDict.values)print("输出字典的键(key)")for(key)indictKeys{print("\(key)")}print("输出字典的值(value)")for(value)indictValues{print("\(value)")}

    isEmpty 属性

    Y我们可以通过只读属性isEmpty来判断字典是否为空,返回布尔值:

    importCocoavarsomeDict1:[Int:String]=[1:"One",2:"Two",3:"Three"]varsomeDict2:[Int:String]=[4:"Four",5:"Five"]varsomeDict3:[Int:String]=[Int:String]()print("someDict1 = \(someDict1.isEmpty)")print("someDict2 = \(someDict2.isEmpty)")print("someDict3 = \(someDict3.isEmpty)")

    以上程序执行输出结果为:

    someDict1=falsesomeDict2=falsesomeDict3=true

    4.元组的使用

    //元组的定义(元组一般作为方法等返回值)

    letarray:[Any] = ["why",28,1.88]

    letinfo = ("why",18,1.88)

    info.0//可以给元组的元素取别名

    letinfo1 = (name:"why",age:18,height:1.88)

    info1.name

    //元素的别名就是元组的名称

    let(name,age,height) = ("lll",14,1.88)

    5.可选类型的使用

    //Swift中规定,对象中的任何属性在创建对象时,都必须有明确的初始值

    //1.可选类型的定义

    //1.1常规方式(不常用)

    //var name : Optional = nil

    //1.2语法糖

    varname :String? =nil//可选类型

    // 2.给可选类型赋值

    name="liumu"

    // 3.取出可选类型的值

    print(name!)//强制解包

    //4.注意:强制解包是非常危险的动作,如果可选类型为nil,系统会蹦掉,建议先判断可选类型的值

    ifname!=nil{

    print(name!)

    }

    //5.可选绑定

    //1.判断name是否有值,如果没有值,直接不执行{}

    //2.如果name有值,系统会自动将name解包,并且把解包后的结果复值给tempName

    //写法一(不常用)

    iflettempName =name{

    print(tempName)

    }

    //写法二(不常用)

    ifletname =name{

    print(name)

    }

    //4.可选类型的应用场景

    // 4.1通过字符串创建一个NSURL对象

    leturl:URL? =URL(string:"http://www.520.com")

    ifleturl =url{

    letrequest =NSURLRequest(url: url)

    }

    5.函数的定义

    //func函数名(参数)->返回值(如果没有返回值Viod V大写){代码块return返回值}

    // 1.没有参数没有返回值

    funcabout() ->Void{

    print("iphoe7")

    }

    about()

    funcabout1() {

    print("iphoe7")

    }

    // 2.没有参数有返回值

    funcreadMeassage() ->String{

    return"吃饭了吗"

    }

    readMeassage()

    // 3.有参数没有返回值

    funccallPhone(phoneName:String) {

    //    print("打电话给"+phoneName)

    print("打电话给\(phoneName)")

    }

    callPhone(phoneName:"123456")

    // 4.有参数有返回值

    funcsum(num1 :Int,num2 :Int) ->Int{

    returnnum1 + num2

    }

    sum(num1:12, num2:24)


    5.1函数的使用注意

    //注意一:内部参数,和外部参数

    // 内部参数:在函数内部可以看到的参数就是内部参数,默认情况下所有的参数都是内部参数

    // 外部参数:在函数外部可以看到的参数名称就是外部参数,3.0之前默认从第二个参数开始即是内部参数也是外部参数,3.0后 从第一个开始即是内部参数也是外部参数

    // 注意二:swift中默认参数

    func makeCoffee(coffName:String = "雀巢") -> String {

    return"制作了一杯 \(coffName)咖啡"

    }

    makeCoffee(coffName: "猫屎")

    makeCoffee()

    //注意三 :可变参数

    func sum(num : Int...) -> Int {

    var  result = 0

    for n in num {

    result += n     //Swift3.0  以后取消了 ++,-- 语法

    }

    return result

    }

    sum(num: 2,3,4,5,6)

    //注意四:指针类型

    //注意五:函数的嵌套使用

    func test () {

    func demo() {

    print("demo")

    }

    print("----")

    demo()

    }

    test()

    相关文章

      网友评论

          本文标题:Swift 基础语法

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