学习地址:http://www.rm5u.com/    或    http://www.runoob.com/

  1. 如果创建的是 OS X playground 需要引入 Cocoa;  如果我们想创建 iOS playground 则需要引入 UIKit .
  2. iPhone或iTouch的宽为320像素,高为480像素,状态栏高为20像素,toobar高为44像素,tabbar高为49像素,导航栏高为44像素。

  3. typealias:类型别名对当前的类型定义了另一个名字;

  4. Swfit语言定义后缀?作为命名类型Optional(可选)的简写;

    var optionalInteger: Int?
    //或者
    var optionalInteger: Optional<Int>
  5. 强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。

    var myString:String?
    myString = "Hello, Swift!"
    if myString != nil {
    // 强制解析
    print( myString! )
    } else {
    print("myString 值为 nil")
    }

    注意:使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。

  6. 自动解析:你可以在声明可选变量时使用感叹号(!)替换问号(?)。

    var myString:String!
    myString = "Hello, Swift!"
    if myString != nil {
    print(myString)
    } else {
    print("myString 值为 nil")
    }
  7. 可选绑定:使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。

    if let constantName = someOptional {
    statements
    }
    // example :
    var myString : String?
    myString = "Hello, Swift!"
    if let yourString = myString {
    print("你的字符串值为 - \(yourString)")
    } else {
    print("你的字符串没有值")
    }
  8. 整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀
    let decimalInteger =            // 17 - 十进制表示
    let binaryInteger = 0b10001 // 17 - 二进制表示
    let octalInteger = 0o21 // 17 - 八进制表示
    let hexadecimalInteger = 0x11 // 17 - 十六进制表示
  9. 注意:Swift中的字母采用的是Unicode编码[1]。Unicode叫做统一编码制,它包含了亚洲文字编码,如中文、日文、韩文等字符,甚至是我们在聊天工具中使用的表情符号
    如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`)

  10. 浮点型字面量的默认推导类型为 Swift 标准库类型中的 Double,表示64位浮点数。
    十进制浮点型字面量 :1.25e2 表示 1.25 ⨉ 10^2,也就是 125.0;同样,1.25e-2 表示 1.25 ⨉ 10^-2,也就是 0.0125。
    十六进制浮点型字面量:0xFp2 表示 15 ⨉ 2^2,也就是 60;同样,0xFp-2 表示 15 ⨉ 2^-2,也就是 3.75。
    eg:   浮点型字面量允许使用下划线 _ 来增强数字的可读性,下划线会被系统忽略,因此不会影响字面量的值。同样地,也可以在数字前加 0,并不会影响字面量的值。
  11. 字符串型字面量:

    转移字符 含义
    \0 空字符
    \\ 反斜线 \
    \b 退格(BS) ,将当前位置移到前一列
    \f 换页(FF),将当前位置移到下页开头
    \n 换行符
    \r 回车符
    \t 水平制表符
    \v 垂直制表符
    \' 单引号
    \" 双引号
    \000 1到3位八进制数所代表的任意字符
    \xhh... 1到2位十六进制所代表的任意字符
  12. 位运算符:位运算符用来对二进制位进行操作,~,&,|,^分别为取反,按位与与,按位与或,按位与异或运算,如下表实例:
    p q p & q p | q p ^ q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1
    指定  A = 0011 1100      ;   B = 0000 1101
    运算符 描述 图解 实例
    & 按位与。按位与运算符对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时才为1。 (A & B) 结果为 12, 二进制为 0000 1100
    | 按位或。按位或运算符|比较两个数,然后返回一个新的数,这个数的每一位设置1的条件是两个输入数的同一位都不为0(即任意一个为1,或都为1)。 (A | B) 结果为 61, 二进制为 0011 1101
    ^ 按位异或. 按位异或运算符^比较两个数,然后返回一个数,这个数的每个位设为1的条件是两个输入数的同一位不同,如果相同就设为0。 (A ^ B) 结果为 49, 二进制为 0011 0001
    ~ 按位取反运算符~对一个操作数的每一位都取反。 (~A ) 结果为 -61, 二进制为 1100 0011 in 2's complement form.
    << 按位左移。左移操作符(<<)将操作数的所有位向左移动指定的位数。

    下图展示了11111111 << 1(11111111 左移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。

    A << 2 结果为 240, 二进制为 1111 0000
    >> 按位右移。右移操作符(<<)将操作数的所有位向又移动指定的位数。

    下图展示了11111111 >> 1(11111111 右移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。

    A >> 2 结果为 15, 二进制为 0000 1111
  13. 赋值运算:
    运算符 描述 实例
    = 简单的赋值运算,指定右边操作数赋值给左边的操作数。 C = A + B 将 A + B 的运算结果赋值给 C
    += 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数。 C += A 相当于 C = C + A
    -= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数。 C -= A 相当于 C = C - A
    *= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数。 C *= A 相当于 C = C * A
    /= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数。 C /= A 相当于 C = C / A
    %= 求余后再赋值,将左右两边的操作数求余后再赋值给左边的操作数。 C %= A 相当于 C = C % A
    <<= 按位左移后再赋值 C <<= 2 相当于 C = C << 2
    >>= 按位右移后再赋值 C >>= 2 相当于 C = C >> 2
    &= 按位与运算后赋值 C &= 2 相当于 C = C & 2
    ^= 按位异或运算符后再赋值 C ^= 2 相当于 C = C ^ 2
    |= 按位或运算后再赋值 C |= 2 相当于 C = C | 2
  14. 区间运算符:
    运算符 描述 实例
    闭区间运算符 闭区间运算符(a...b)定义一个包含从a到b(包括a和b)的所有值的区间,b必须大于等于a。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中: 1...5 区间值为 1, 2, 3, 4 和 5
    半开区间运算符 半开区间(a..<b)定义一个从a到b但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。<="" td=""> 1..< 5 区间值为 1, 2, 3, 和 4
  15. 三目运算符:(a ? b : c) -- 如果a为true,值为b,否则为c.
  16. 运算符优先级:

    • 指针最优,单目运算优于双目运算。如正负号。
    • 先乘除(模),后加减。
    • 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7 等价于 (1 << (3 + 2))&7
    • 逻辑运算最后计算
      运算符类型 运算符 结合方向
      表达式运算 () [] . expr++ expr-- 左到右
      一元运算符

      * & + - ! ~ ++expr --expr

      * / %

      + -

      >> <<

      < > <= >=

      == !=

      右到左
      位运算符

      &

      ^

      |

      &&

      ||

      左到右
      三元运算符 ?: 右到左
      赋值运算符 = += -= *= /= %= >>= <<= &= ^= |= 右到左
      逗号 , 左到右
  17. Swift 条件语句
    语句 描述

    if 语句

    if 语句 由一个布尔表达式和一个或多个执行语句组成。

    if...else 语句

    if 语句 后可以有可选的 else 语句else 语句在布尔表达式为 false 时执行。

    if...else if...else 语句

    if 后可以有可选的 else if...else 语句, else if...else 语句常用于多个条件判断。

    内嵌 if 语句

    你可以在 if 或 else if 中内嵌 if 或 else if 语句。

    switch 语句

    switch 语句允许测试一个变量等于多个值时的情况。

  18. Swift 循环
    循环类型 描述

    for-in

    遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。

    for 循环

    用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。

    while 循环

    运行一系列语句,如果条件为true,会重复运行,直到条件变为false。

    repeat...while 循环

    类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。
    控制语句 描述

    continue 语句

    告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。

    break 语句

    中断当前循环。

    fallthrough 语句

    如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。
  19. Swift 字符串
    创建字符串:你可以通过使用字符串字面量或 String 类的实例来创建一个字符串:
    import UIKit
    
    // 使用字符串字面量
    var stringA = "Hello, World!"
    print( stringA ) // String 实例化
    var stringB = String("Hello, World!")
    print( stringB )

    空字符串:你可以使用空的字符串字面量赋值给变量或初始化一个String类的实例来初始值一个空的字符串。 我们可以使用字符串属性 isEmpty 来判断字符串是否为空:

    import UIKit
    
    // 使用字符串字面量创建空字符串
    var stringA = "" if stringA.isEmpty {
    print( "stringA 是空的" )
    } else {
    print( "stringA 不是空的" )
    } // 实例化 String 类来创建空字符串
    let stringB = String() if stringB.isEmpty {
    print( "stringB 是空的" )
    } else {
    print( "stringB 不是空的" )
    }

    字符串常量:你可以将一个字符串赋值给一个变量或常量,变量是可修改的,常量是不可修改的。
    字符串中插入值:字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。 您插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中:

    import UIKit
    
    var varA   =
    let constA =
    var varC:Float = 20.0 var stringA = "\(varA) 乘以 \(constA) 等于 \(varC * 100)"
    print( stringA )

    字符串连接:字符串可以通过 + 号来连接。
    字符串长度:字符串长度使用 String.characters.count 属性来计算
    字符串比较:可以使用 == 来比较两个字符串是否相等
    Unicode 字符串:Unicode 是一个国际标准,用于文本的编码,Swift 的 String 类型是基于 Unicode建立的。你可以循环迭代出字符串中 UTF-8 与 UTF-16 的编码,实例如下:

    import UIKit
    
    var unicodeString   = "学习教程"
    
    print("UTF-8 编码: ")
    for code in unicodeString.utf8 {
    print("\(code) ")
    } print("\n") print("UTF-16 编码: ")
    for code in unicodeString.utf16 {
    print("\(code) ")
    }

    字符串函数以及运算符:

    序号 函数/运算符 & 描述
    1

    isEmpty

    判断字符串是否为空,返回布尔值

    2

    hasPrefix(prefix: String)

    检查字符串是否拥有特定前缀

    3

    hasSuffix(suffix: String)

    检查字符串是否拥有特定后缀。

    4

    Int(String)

    转换字符串数字为整型。 实例:

    let myString: String = "256"
    let myInt: Int? = Int(myString)
    5

    String.characters.count

    计算字符串的长度

    6

    utf8

    您可以通过遍历 String 的 utf8 属性来访问它的 UTF-8 编码

    7

    utf16

    您可以通过遍历 String 的 utf8 属性来访问它的 UTF-16 编码

    8

    unicodeScalars

    您可以通过遍历String值的unicodeScalars属性来访问它的 Unicode 标量编码.

    9

    +

    连接两个字符串,并返回一个新的字符串

    10

    +=

    连接操作符两边的字符串并将新字符串赋值给左边的操作符变量

    11

    ==

    判断两个字符串是否相等

    12

    <

    比较两个字符串,对两个字符串的字母逐一比较。

    13

    !=

    比较两个字符串是否不相等。

  20. Swift 字符(Character)
    Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character:
    import UIKit
    
    let char1: Character = "A"
    let char2: Character = "B" print("char1 的值为 \(char1)")
    print("char2 的值为 \(char2)")

    注意:如果想在 Character(字符) 类型的常量中存储更多的字符,则程序执行会报错。
         Swift 中不能创建空的 Character(字符) 类型变量或常量。
    遍历字符串中的字符:Swift 的 String 类型表示特定序列的 Character(字符) 类型值的集合; 每一个字符值代表一个 Unicode 字符;您可通过for-in循环来遍历字符串中的characters属性来获取每一个字符的值:

    import UIKit
    
    for ch in "Hello".characters {
    print(ch)
    }

    字符串连接字符:使用 String 的 append() 方法来实现字符串连接字符:

    import UIKit
    
    var varA:String = "Hello "
    let varB:Character = "G" varA.append( varB ) print("varC = \(varA)")
  21. Swift 数组
    创建数组:
          可以使用构造语法来创建一个由特定数据类型构成的空数组:
            var someArray = [someType]()

    创建一个初始化大小数组的语法:
               var someArray = [someType](count: NumberofElements, repeatedValues: InitialValue)
          创建一个类型为Int,大小为3,初始值为0的空数组:
               var someInts = [Int](count: 3, repeatedValues: 0)
          创建含有三个元素的数组:
               var someInts:[Int] = [10,20,30]

    访问数组:我们可以根据数组的索引来访问数组的元素:
          var someVar = someArray[index]

    修改数组:可以使用 append() 方法或者赋值运算符 += 在数组末尾添加元素,如下所示,我们初始化一个数组,并向其添               加元素,也可以通过索引修改数组元素的值。

    遍历数组:可以使用for-in循环来遍历所有数组中的数据项,如果我们同时需要每个数据项的值和索引值,可以使用 String                 的 enumerate() 方法来进行数组遍历:

    import UIKit
    
    var someStrs = [String]()
    
    someStrs.append("Apple")
    someStrs.append("Amazon")
    someStrs.append("Runoob")
    someStrs += ["Google"] for (index, item) in someStrs.enumerate() {
    print("在 index = \(index) 位置上的值为 \(item)")
    }

    合并数组:我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中               推断出来。
    Count属性:可以使用count属性来计算数组元素个数;

    isEmpty属性:可以通过只读属性 isEmpty 来判断数组是否为空,返回布尔值;

Studying-Swift :Day01的更多相关文章

  1. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

  2. iOS8 Core Image In Swift:视频实时滤镜

    iOS8 Core Image In Swift:自己主动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift: ...

  3. iOS8 Core Image In Swift:人脸检测以及马赛克

    iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...

  4. iOS8 Core Image In Swift:更复杂的滤镜

    iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...

  5. iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用

    iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift:人脸 ...

  6. Swift:UIKit中Demo(一)

    关于Swift的基本概念及语法知识.我在前面的章节中已经介绍了非常多.这一节和下一节主要有针对性的解说Swift在实际UIKit开发中的使用场景及注意点.先来看看Demo的终于效果图. Demo分析: ...

  7. 杂项-语言-Swift:Swift

    ylbtech-杂项-语言-Swift:Swift Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于 ...

  8. Swift:闭包

    一.闭包的介绍 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Ar ...

  9. swift:谈谈swift几种常见属性的区别

    一.前奏 Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS.Paython.C++等,完全区别于OC.个人感觉它没有完全的OOP和O ...

  10. Swift:subscript

    本文转载自:http://blog.csdn.net/sinat_27706697/article/details/47122137 感谢作者:秋恨雪 通常情况下,我们在使用数组(Array)或字典( ...

随机推荐

  1. 文件快速搜索工具-Everything的使用(转)

    首先它是一款基于名称实时定位文件和目录的搜索工具,有以下几个优点: 快速文件索引 快速文件搜索 较低资源占用 轻松分享文件索引 实时跟踪文件更新 通过使用everything小工具,可以提高我们的工作 ...

  2. UtilDev Web Server Pro

    A good tool for asp.net hosting: http://ultidev.com/products/UWS-Cassini-Pro/

  3. 2015年第7本(英文第6本):纳尼亚传奇I–狮子、女巫、魔衣橱

    书名: The Chronicles of Narnia 1 — The Lion, the Witch and the Wardrobe 作者:C.S. Lewis 单词数:4.2万 不重复单词数: ...

  4. Android-ListView类

    ListView组件在应用程序中可以说是不可或缺的一部分,ListView主要是显示列表数据,同时可以滚动查看,这篇博客主要是对ListView的基本用法进行说明,后面会依次对ListView点击动态 ...

  5. 【读书笔记】iOS-垃圾回收

    Objective-C的垃圾回收器是一种继承性的垃圾回收器.与那些已经存在了一段时间的对象相比,新创建的对象更可能被当成垃圾.垃圾回收器定期检查变量和对象以及它们之间的指针,当发现没有任何变量指向某个 ...

  6. 如何获取QQ里的截图app?

    电脑系统平台:OS X EI Capitan 10.11 在以前的旧的QQ版本,QQ的截图的偏好还有一个开机自启动的选项: 现在新的版本,却没有了"开机自动运行"的选项,然而有时候 ...

  7. 让eclipse启动时拥有jre

    让eclipse 拥有jre,这样才能启动 eclipse/eclipse.ini 首行加入 -vm /home/liujl/installer/jdk/bin/java

  8. AOP这些应用场景(交叉业务)

    1.统计某个方法的性能,可以在每个业务方法执行前后 记录方法执行的当前时间,执行后的时间-执行前的时间= 方法执行时间.  这样就可以在开发过程中(项目未交付给客户前)统计程序的性能. 2.安全 ,权 ...

  9. 使用MongoDB C#官方驱动操作MongoDB

    想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动.C#版的驱动有很多种,如官方提供的,samus. 实现思路大都类似.这里我们先用官方提供的mongo-csharp-dri ...

  10. mysql table 最新更新时间

    查看表的最后mysql修改时间   SELECT TABLE_NAME,UPDATE_TIME FROM information_schema.tables where TABLE_SCHEMA='d ...