美文网首页
swift语言(swift3.0)基础知识(一)

swift语言(swift3.0)基础知识(一)

作者: JSOfJackChen | 来源:发表于2017-01-05 01:50 被阅读42次

    1、swift语言简单介绍

    Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序。苹果目前在大力推广Swift,从Xcode8开始苹果的开发文档已经全部都是使用的swift语言。斯坦福大学的公开课目前也是使用Swift在授课.因为以后Swift必将代替OC。可见,学习好OC语言的同时,尽快掌握swift语言是很必要的。夏则资皮,冬则资絺[chī],旱则资舟,水则资车,以待乏也。未雨绸缪才是明智之举。

    1.1、swift的语言特点:

    1、从它的语法中能看到Objective-C、JavaScript、C#、Python等语言的影子,
    2、语法简单、代码简洁、使用方便。
    3、可与Objective-C混合使用(相互调用)提供了类似 Java 的名字空间(namespace)、泛型(generic)、运算符重载(operator overloading)
    4、使用swift开发可以让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量

    2、swift语言初体验

    1、从Xcode6开始出现(Swift开始出现)。翻译为:操场/游乐场,对于学习Swift基本语法非常方便,所见即所得(快速查看结果);语法特性发生改变时,可以快速查看。

    2、Swift最基本的语法变化
    导入框架 import UIKit(UIKit框架包含了Foundation框架)
    定义标识符时,必须声明该标识符是变量还是常量 【使用 let或者 var 通常我们先使用 let来声明这个标识符,当我们需要赋值的时候再改为 var变量类型】
    声明标识符的格式:变量/常量关键字 名称 : 数据类型
    语句结束时不需要加分号(;)
    如果同一行有多个语句,则依然需要加,但是不建议一行多条语句
    Swift中的打印语句:print(打印的内容),不需要使用NSLog()来打印

    3、常量和变量

    3.1、什么是常量和变量

    在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量
    使用 let来定义常量,定义之后不可以修改
    使用 var来定义变量,定义之后可以修改

    3.2、常量和变量的基本使用

    当一个标识符被定义给常量的时候是不可以被修改的。


    常量和变量的使用

    3.3、常量和变量的使用注意

    在真实使用过程中,建议先定义常量,如果需要修改再修改为变量(更加安全)
    指针指向的对象不可以再进行修改.但是可以通过指针获得对象后,修改对象内部的属性

    4、swift中的数据类型

    4.1、Swift中常用的数据类型有

    Int、Float、Double、Bool、Character、String

    Array、Dictionary、元组类型(Tuple)、可选类型(Optional)

    注意:数据类型的首字母都是大写的

    swift中的整型和浮点型
    Swift中的数据类型和OC中的数据类型一样也有:整型/浮点型/对象类型/结构体类型等等,这里主要讲解解整型和浮点型。

    4.1.1整型

    有符号
    Int8 : 有符号8位整型
    Int16 : 有符号16位整型
    Int32 : 有符号32位整型
    Int64 : 有符号64位整型
    Int : 和平台相关(默认,相当于OC的NSInteger)

    无符号
    UInt8 : 无符号8位整型
    UInt16 : 无符号16位整型
    UInt32 : 无符号32位整型
    UInt64 : 无符号64位整型
    UInt : 和平台相关(常用,相当于OC的NSUInteger)(默认)

    4.1.1浮点型

    Float : 32位浮点型
    Double : 64浮点型(默认)

    5、Swift中的类型推导

    Swift是强类型的语言,Swift中任何一个标识符都有明确的类型。
    注意:
    如果定义一个标识符时有直接进行赋值,那么标识符后面的类型可以省略。因为Swift有类型推导,会自动根据后面的赋值来决定前面的标识符的数据类型,可以通过option+鼠标左键来查看变量的数据类型。

    查看数据的默认数据类型
    查看数据的默认类型

    6、Swift中基本运算

    Swift中在进行基本运算时必须保证类型一致,否则会出错,相同类型之间才可以进行运算,因为Swift中没有隐式转换。
    数据类型的转化
    Int类型转成Double类型:Double(标识符)
    Double类型转成Int类型:Int(标识符)

    基本运算
    错误原因:数据的运算没有保证数据类型一致
    错误
    注意:swift的赋值运算符=是没有返回值的 所以不可以把赋值运算符作为条件语句的判断条件

    7、逻辑分支

    分支即if/switch/三目运算符等判断语句,通过分支语句可以控制程序的执行流程。

    7.1、if分支语句

    和OC中if语句有一定的区别,判断句可以不加括号()
    在Swift的判断句中必须有明确的真假,不再有非0即真,必须有明确的Bool值。
    Bool有两个取值:false/true


    if分支的正确书写方式

    7.2 三目运算符

    三目运算符还是和OC中保持一致的使用方法


    三目运算符的使用

    7.3 switch分支

    Switch作为选择结构中必不可少的语句也被加入到了Swift,但苹果对Switch进行了大大的增强,使其拥有其他语言中没有的特性。
    基本用法和OC用法一致
    不同之处:
    switch后可以不跟()
    case后可以不跟break(默认会有break)


    switch分支语句

    一个case判断中,可以判断多个值。多个值使用逗号隔开


    使用逗号分隔

    如果希望出现之前的case穿透,则可以使用关键字fallthrough


    case穿透

    注意:switch支持区间判断
    什么是区间?
    通常我们指的是数字区间:010,100200
    swift中的区间常见有两种
    开区间:0..<10 表示:0~9,不包括10 一般在数学中的写法(0,10) 表示不包括0和10 [0,10) 表示包括 0 不包括10 [0,10] 表示包括0 和10的闭区间
    闭区间:0...10 表示:0~10

    区间的使用

    7.4 guard的使用

    guard是Swift2.0新增的语法,它与if语句非常类似,它设计的目的是提高程序的可读性。guard语句必须带有else语句,它的语法如下:
    当条件表达式为true时候跳过else语句中的内容,执行语句组内容。
    条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw

    一般写在函数的内部。书写格式如下:

    guard <#condition#> else { // 这是判断条件
         <#statements#> // 不满足判断条件的执行语句
     }
    满足条件时执行这里的语句
    
    guard的简单使用

    8、循环语句

    在开发中经常会需要循环,常见的循环有:for/while/do while。这里我们只介绍for/while,因为for/while最常见

    swift循环语句

    swift的循环语句在swift3.0版本不支持C语言格式的循环方式。现在常用方式是使用区间,同时运算符 ++ 在swift3.0中通常需要写成i += 1

    特殊写法
    如果在for循环中不需要用到下标i

    省略循环索引的写法

    8.2 while和do while循环

    while循环
    while的判断句必须有正确的真假,没有非0即真
    while后面的()可以省略

    while循环语句

    do while循环
    使用repeat关键字来代替了do

    repeat--While循环

    9、字符串

    9.1字符串的简单介绍

    字符串在任何的开发中使用都是非常频繁的。
    OC和Swift中字符串的区别:
    在OC中字符串类型时NSString,在Swift中字符串类型是String
    OC中字符串@"",Swift中字符串""

    使用 String 的原因
    String 是一个结构体,性能更高
    NSString 是一个 OC 对象,性能略差
    String 支持直接遍历
    Swift 提供了 String 和 NSString 之间的无缝转换

    9.2、字符串的使用

    字符串的截取

    Swift中提供了特殊的截取方式,该方式非常麻烦,因为Index创建较为麻烦。
    简单的方式是将String转成NSString来使用,在标识符后加:as NSString即可

    var string = "I我 am  a string"
    
    string.characters.count // 1、获取字符串中的字符个数 包括空格
    
    for C in string.characters { // 2、遍历字符串中的所有的字符
        print(C)
    }
    
    if string.isEmpty {     // 3、判断字符串是否为空
        print("这是一个空字符串")
    }else {
    
       print("这不是一个空字符串")
    }
    /*
     error: 'String' is not convertible to 'Bool'
    因为swift是强类型语言
     if string {
     print("这不是一个空字符串")
     }
     */
    
     string = string.localizedUppercase // 4、字符串转换字符成大写字母
    
     string = string.localizedLowercase // 5、字符串转换字符成小写字母
    
    let stringA = "我是中文字符串"
    print("\(stringA)\(string)")  // 6、字符串的拼接
    
    let stringB = stringA + string // 6.2 字符串可以直接使用加号➕来进行拼接
    
     let numberA = 1
     let numberB = 2
    
    print("\(numberA)\(numberB)\(stringB)") // 6.3 字符串和其他类型之间的拼接
    
    string.appending(stringA) // 6.4 可变字符串使用API的拼接方式
    
    var URLString = "https://www.baidu.com"
    (URLString as NSString).substring(to: 6) // 7、字符串的截取
    (URLString as NSString).substring(with: NSMakeRange(8, 9)) // 7.2 按照范围来截取字符串
    (URLString as NSString).substring(from: 17) // 7.3 从某一个下标索引开始截取
    
    URLString.hasPrefix("https://") // 8、判断字符串是否有某一个前缀
    URLString.hasSuffix(".com") // 8.2 、判断字符串是否有某一个后缀
    
    stringA == string  // 9、字符串的比较
    

    相关文章

      网友评论

          本文标题:swift语言(swift3.0)基础知识(一)

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