Swift笔记之基础

声明一个变量

var name = "我是客服";

申明一个常量

let youName = "不是客服";
youName = "你才是客服"; //将会编译不通过

打印

print("string");
//打印字符串
var name = "tomas";
print("my name is \(name)");

//打印整数
var age = "12";
print("my age is \(age)");

分号

Swift 不一定需要分号,在一行中写两句代码才需要

let name = "cat"; var age = 12;
//不需要分号写法
let name = "cat"
var age = 12

整形

Swift 提供8 ,16,32和64位整形和无符号整形,命名方法和C相似,8位无符号为UInt8,32位为Int32.

获取最大最小值方法

let minUInt = UInt8.min
let maxUInt = UInt8.max

Int & UInt

  • 在32位平台上,Int 就是32位的
  • 在64位平台上,Int 就是64位的

浮点类型

  • Double 相当于64位的浮点类型
  • Float 相当于32位的浮点类型
    *
    ### Swift是类型安全和类型推断的
var age = 12;
age = "Tomas"; //这行是编译不通过的,age 已经推断为Int型,无法赋值String类型

数字样式

  • 十进制 没有前缀
  • 二进制 0b开头
  • 八进制 0o开头
  • 十六进制 0x开头

科学计数法

十进制

  • 1.25e2 -> 1.25 x 102 or 125.0.
  • 1.25e-2 -> 1.25 x 10-2 or 0.0125.

十六进制

  • 0xFp2 -> 15 x 22, or 60.0.
  • 0xFp-2 -> 15 x 2-2, or 3.75.

12.1875的多种写法

let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0

还可以增加一些额外的格式来使数字更容易看懂

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

强行转换

let a = 12.9;
var b: Int = Int(a);

类型别名

就是和C++一样,可以吧Int改为另外一个名字

typealias AudioSample = UInt16;
var maxAmplitudeFound = AudioSample.min;

布尔类型

Swift 有个基本数据类型Bool, 取值true or false

let orangesAreOrange = true
let turnipsAreDelicious = false

元组

装包

let http404Error = (404, "Not Found");
//http404Error 类型就是(Int,String) 类型

拆包

var http404NotFound = (404,"NOT FOUND");
var (code,message) = http404NotFound;
print(code,message);

部分拆包

var (code,_) = http404NotFound;

直接通过下标去访问

print(http404NotFound.0,http404NotFound.1);

还可以直接通过key访问,像Map一样

var http500 = (code : 500,message:"Sever Error");
print(http500.code,http500.message);

optional(可选项)

思考以下代码,convertedNumber 是optional Int 还是 Int

let possibleNumber = "123";
let convertedNumber = Int(possibleNumber);

由于posssibleNumber 并不是一定是可以转换为Int类型的,当不能返回的时候就是nil,所以应该是optional Int 对象。

nil

你可以给一个可选类型设置nil值

var version: Int? = nil;
print(version)

非可选类型是不可以给一个nil值的,只有可选类型才可以

直接定义个可选类型默认就是nil赋值

var version: Int?;
print(version) ;//为nil

和OC上的nil并不是一样的,Swift上的只是实际值不在的时候一个确定的赋值类型,并不仅仅用于对象,所有类型都是可以的

if 语句以及强制解析

判断可选类型中是否有值

if containAValue != nil{
    //do something
}

使用可选类型

if containAValue != nil{
    print("\(containAValue!)");
}

使用"!"强制使用可选类型的时候必须确定部位nil,不然将会出现错误

可选绑定

var name : String? = "test";//name 不为nil时将会执行
if let myName = name{
    print(myName);
}

错误处理

错误处理写法

do {
    try canThrowAnError()
    // no error was thrown
} catch {
    // an error was thrown
}