1、使用 let 来声明常量,使用 var 来声明变量。

注:你能够在一行中声明多个常量或者多个变量。用逗号隔开。


2、类型标注
假设初始值没有提供足够的信息(或者没有初始值),那你须要在变量后面声明类型,用冒号切割。
let variable: String 
注意:一般来说你非常少须要写类型标注。

假设你在声明常量或者变量的时候赋了一个初始值,Swift能够判断出这个常量或者变量的类型。


3、输出函数println 和 print
println:是一个用来输出的全局函数,输出的内容会在最后换行。
print:唯一差别是在输出内容最后不会换行。

4、把值转换成字符串
有一种更简单的把值转换成字符串的方法:把值写到括号里,而且在括号之前写一个反斜杠。
let apples = 3 
let oranges = 5

let appleSummary = "I have \(apples) apples."

let fruitSummary = "I have \(apples + oranges) pieces of fruit." 

5、凝视
单行凝视://
多行凝视:/*  */

6、浮点数
Double:表示64位浮点数。

当你须要存储非常大或者非常高精度的浮点数时请使用此类型。

Float:表示32位浮点数。精度要求不高的话能够使用此类型。

7、类型别名
类型别名(type aliases)就是给现有类型定义还有一个名字。你能够使用 typealias keyword来定义类型别名。
比如:当你想要给现有类型起一个更有意义的名字时,类型别名很实用。如果你正在处理特定长度的外部资源的数据:
typealias AudioSample = UInt16

var minFound = AudioSample.min

var maxFound = AudioSample.max

8、创建元组 tuples
元组(tuples)把多个值组合成一个复合值。元组内的值能够使随意类型,并不要求是同样类型。
比如:let http404Error = (404, "Not Found")

9、元组内容的分解
能够将一个元组分解成单独的常量和变量使用。

let (statusCode, statusStr) = http404Error

假设你仅仅须要一部分元组值,分解的时候能够把要忽略的部分用下划线(_)标记。
let (justTheStatusCode, _) = http404Error

你还能够通过下标来訪问元组中的单个元素,下标从零開始。
var code = http404Error.0
var msg = http404Error.1

10、可选值 optionals 的强制解析
一个可选的 Int 被写作 Int?而不是 Int,它表示这个整形变量可能有值,或者可能为nil(沒值)。

你能够使用 if 语句来推断一个可选是否包括值。假设可选有值,结果是 true;假设没有值,结果是 false。


可选值的强制解析:当你知道可选确实包括值后,则能够在可选的名字后面加上一个感叹号(!)来获取值。

11、nil
这个表示没有值的意思。
假设你声明一个可选常量或者变量可是没有赋值,它们会自己主动被设置为 nil:
var surveyAnswer: String?


注意:nil 不能用于非可选的常量和变量。假设你的代码中有常量或者变量须要处理值缺失的情况,请把它们声明成相应的可选类型。

12、 隐式解析可选

有时候在程序架构中,第一次被赋值之后,能够确定一个可选总会有值。在这样的情况下,每次都要推断和解析可选值是很低效的,由于能够确定它总会有值。

这时我们就能够使用隐式解析可选。仅仅须要把后面的 ? 改成 ! 就可以。

13、隐式可选和可选的取值差别
let possibleString: String?

= "An optional string."

println(possibleString!) // 须要惊叹号来获取值



let assumedString: String! = "An implicitly unwrapped optional string."

println(assumedString) // 不须要感叹号

注意:假设一个变量之后可能变成 nil 的话请不要使用隐式解析可选。假设你须要在变量的 生命周期中推断是否是 nil 的话,请使用普通可选类型。

14、断言
有时候假设缺少某些条件。我们不想让代码继续运行下去,就能够使用断言(assertion)。
断言会推断一个逻辑条件是否为true,假设是true则执行下去。否则就中止执行。
使用assert函数来写断言。比如:
let age = -3

assert(age >= 0, "a person's age can not less than 0”)
由于age >= 0 为false, 则断言触发,中止执行。


15、何时使用断言
- 整数的附属脚本索引被传入一个自己定义附属脚本实现,可是下标索引值可能太小或者太大。

- 须要给函数传入一个值,可是非法的值可能导致函数不能正常运行。

- 一个可选值如今是nil,可是后面的代码执行须要一个非 nil 值。

注意:断言可能导致你的应用终止执行,所以你应当细致设计你的代码来让非法条件不会出现。然而,在你的应用公布之前,有时候非法条件可能出现,这时使用断言能够高速发现问题。

16、创建数组和字典
使用方括号[ ]来创建数组和字典,并使用下标或者键(key)来訪问元素。
var shoppingList = [" catfish", "water", " tulips", "blue paint"]

var occupations = [
     "Malcolm": "Captain",

     "Kaylee": "Mechanic",
]


17、创建空数组和字典
假设类型信息能够被判断出来,你能够用[]和[:]来创建空数组和空字典——就像你声明变量或者给函数传參数的时候一样。


18、负数求余
在对负数 -b 求余时, -b的符号会被忽略. 这意味着 a % b 和 a % -b的结果是同样的.

19、闭区间运算符
闭区间运算符 a...b 定义一个包括从 a 到 b (包括 a 和 b)的全部值的区间。

20、半闭区间运算符
半闭区间  a..<b 定义一个从  a 到  b 但不包含  b 的区间. 之所以称为半闭区间,  是由于该区间包含第一个值而不包含最后的值。
方便的使用于数组,比如:
let names = ["Anna", "Alex", "Brian", "Jack"] 
let count = names.count 
for i in 0..<count { 
    println("第 \(i + 1) 个人叫 \(names[i])") 

21、字符串字面量
代码中包括一段提前定义的字符串值作为字符串字面量,它能够包括以下的特殊字符:
1.转义特殊字符 \0 (空字符)、\\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\" (双引號)、\' (单引號)。
2.单字节 Unicode 标量。写成 \xnn,当中  nn 为两位十六进制数。
3.双字节 Unicode 标量,写成 \unnnn,当中 nnnn 为四位十六进制数。
4.四字节 Unicode 标量,写成 \Unnnnnnnn,当中 nnnnnnnn 为八位十六进制数。


22、字符串空属性推断
var str = ""
str.isEmpty //true

23、 countElements 函数
通过调用全局 countElements 函数。并将字符串作为參数进行传递能够获取该字符串的字符数量。
var str = "andy is a good guy"
countElements (str)

24、字符串插值
插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号里。
let multiplier = 3 
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

25、字符串比較
Swift 提供了三种方式来比較字符串的值:字符串相等,前缀相等和后缀相等。
(1)字符串相等:即使用 == 来比較字符串
(2)前缀/后缀相等:通过调用字符串的 hasPrefix/hasSuffix 方法来检查字符串是否拥有特定前缀/后缀。它会返回一个Boolean值。


26、字符串大写和小写
您能够通过字符串的  uppercaseString 和 lowercaseString  属性来訪问一个字符串的大写/小写版本号。

27、数组的类型标注
Swift 数组应该遵循像Array<SomeType>这种形式。当中sometype是这个数组中唯一同意存在的数据类型。 我们也能够使用像SomeType[]这种简单语法(推荐)。

假设我们创建了一个String 值类型的数组,我们不能往当中插入不论什么不是String 类型的数据。 Swift 中的数组是类型安全的。而且它们中包括的类型必须明白。

var shoppingList: String[] = ["Eggs", "Milk"]

由于Swift有类型判断。 所以当我们拥有同样类型的数组值时,我们能够写成:var shoppingList = ["Eggs", "Milk"]

28、创建空数组
创建特定数据类型的空数组,比如创建Int类型的空数组。

var someInts = Int[]() 

29、数组的属性和方法
(1)count属性:获得数组中数据的数量。
(2)isEmpty属性:检查数组是否存在值。
(3)append / += 方法:我们能够使用append方法或者 += 运算符在数组后面加入数据项。
比如:shoppingList.append("Flour") 或者 shoppingList += "Baking Powder" 或者 shoppingList += [ "Cheese", "Butter"]
(4)insert(atIndex:)方法:在某个详细索引值之前加入数据项。
比如:shoppingList.insert("Maple Syrup", atIndex: 0)
(5)removeAtIndex()方法:移除数组中的某一项。这种方法把数组在特定索引值中存储的数据项移除而且返回这个被移除的数据项。

比如:let mapleSyrup = shoppingList.removeAtIndex(0)
(6)removeLast()方法:移除数组中最后一项并返回其值。


30、利用下标改变一系列数据值
即使新数据和原有数据的数量是不一样的。
以下的样例把"Chocolate Spread"。"Cheese",和"Butter" 替换为"Bananas"和 "Apples":
shoppingList[4...6] = ["Bananas", "Apples"]

31、数组遍历
一般来说,for-in循环就可以,可是假设我们须要每一个数据项的值和索引,则须要使用全局 enumerate 函数来进行数组遍历,比如:
for (index, value) in enumerate(shoppingList) {
 ...
}

32、创建特定大小,数据默认的Array
// threeDoubles 是一种 Double[]数组, 等于 [0.0, 0.0, 0.0] 
var threeDoubles = Double[](count: 3, repeatedValue:0.0) 

由于我们Swift有类型判断的存在,所以在使用这样的构造方法的时候不须要指明数据类型,由于从value中我们就知道了数据的类型:
var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)


33、字典
字典是一种存储同样类型多重数据的存储器。每一个值(value)都关联独特的键(key)。键作为字典中的这个值数据的标识符。
注:在某个特定字典中能够存储的键和值必须预定义清楚。方法是通过显性类型标注或者类型判断。

Swift 的字典使用Dictionary<KeyType, ValueType>定义,当中KeyType是字典中键的数据类型。ValueType是字典中相应于这些键所存储值的数据类型。
比如:var airports: Dictionary<String, String> = ["TYO": "Tokyo", "DUB": "Dublin"]

和数组一样,假设我们使用字面语句构造字典就不用把类型定义清楚。

airports的也能够用这样的方法简短定义:

var airports = ["TYO": "Tokyo", "DUB": "Dublin"]


34、字典的方法和属性
基本和数组一样,都有类似的方法和属性,而且特别存在例如以下:
(1)updateValue(forKey:)方法:在这个键不存在相应值的时候设置值或者在存在时更新已存在的值,这种方法返回更新值之前的原值。这样方便我们检查更新是否成功。

(2)removeValueForKey(KeyName)方法:在键值对存在的情况下会移除该键值对而且返回被移除的value或者在没有值的情况下返回nil。

35、移除键值对
我们能够对某个键相应值赋予nil来移除这个键值对。
airports["APL"] = nil

36、字典遍历
使用for-in就可以:
for (airportCode, airportName) in airports {
  ...
}

37、字典的keys 或 values 属性
这些属性代表一个字典的全部key 或 value 的集合。
for airportCode in airports.keys {
 ... 
}

for airportName in airports.values { 
     ....
 } 


38、将键 或 值构造成一个新数组
let airportCodes = Array(airports.keys) 
// airportCodes is ["TYO", "LHR"] 
 
let airportNames = Array(airports.values) 
// airportNames is ["Tokyo", "London Heathrow"]


39、创建一个空字典
var namesOfIntegers = Dictionary<Int, String>()

注:假设上下文中存在了空字典的字面语句,比如:namesOfIntegers[16] = "sixteen" ,则我们能够使用 namesOfIntegers = [:]  来定义一个Int, String类型的空字典。

Swift基础类型的更多相关文章

  1. swift基础:第二部分:函数和闭包

    今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...

  2. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  3. swift基础语法(四) 函数、闭包(Closures)

    //函数基本定义 func 函数名(参数名:参数类型=默认值) ->返回值类型{代码块} //无参无返回值函数 func hsmin(){ } //单参无返回值函数 func prin(st:S ...

  4. 浅谈Swift集合类型

    Swift 的集合表现形式由数组和字典组成.它可以完美的存储任何呢想存储的东西. 数组是一个同类型的序列化列表集合,它用来存储相同类型的不同值.字典也是一个数组,但它的存值方式类似于Map,通过一对一 ...

  5. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  6. Swift基础语法学习总结一

    1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. ...

  7. 3.Swift翻译教程系列——Swift基础知识

    英语PDF下载链接http://download.csdn.net/detail/tsingheng/7480427 Swift是用来开发iOS和OS X应用的新语言,可是很多地方用起来跟C或者OC是 ...

  8. swift -- 基础

    swift -- 基础 1.常量和变量 常量: let 变量: var 2.声明常量和变量 常量的声明: let let  a = 1         //末尾可以不加分号,等号两边的空格必须对应(同 ...

  9. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

随机推荐

  1. Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法

    首先,错误报告存放位置: cd /var/crash/ ls //可以查看错误报告 1 2 sudo rm /var/crash/* //删除该目录下的所有文件 1 但是,这只是删除掉的是错误报告,如 ...

  2. Linux 基础——权限管理命令chown、chgrp

    一.chown命令与chgrp命令的作用 有时你需要改变文件或目录的属主,比如有人离职或开发人员创建了一个在测试或生产环境中需要归属在系统账户下的应用.Linux提供了两个命令来实现这个功能:chow ...

  3. netty 基础知识

    http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...

  4. 几个python one-liner

    生成斐波那契数列的前10个数,从1开始.若生成前n个,改为range(n-2).代码很简单: List = reduce(lambda x, y: x + [x[-1] + x[-2]], range ...

  5. 牛客练习赛19 C-托米航空公司

    思路:轮廓线dp,找bug找死我了. #include<bits/stdc++.h> #define LL long long #define fi first #define se se ...

  6. 用memcached实现的php锁机制

    <?php /** * 使用Memcache实现给进程加锁的类 * * Copyright (C) 2013 JeffJing * * 一些时候需要让系统的某些操作串行化,这个时候就要对这些操作 ...

  7. thinkphp5.0自动加载

    概述 ThinkPHP5.0 真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符合PHP ...

  8. IntelliJ IDEA 编译程序出现 非法字符 的 解决方法(转)

    百度到很多方法,比如(删了文件重新建:先改成GBK再UTF8:粘贴到notpad++上改utf8),但都没有解决问题.下面这种方法确实有效,先记下来,如果有其他好方法将来在补充…… 文章来源:  ht ...

  9. 【转载】ARouter-万能路由协议

    Github源码地址:https://github.com/alibaba/ARouter 一.功能介绍 支持直接解析标准URL进行跳转,并自动解析参数注入 支持多模块工程使用 支持添加多个拦截器,自 ...

  10. quartz定时任务,已过期的内容自动下线

    概念: Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行.Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数. 框架架构: 简单实例: ...