Swift
文章平均质量分 60
土豆吞噬者
这个作者很懒,什么都没留下…
展开
-
Swift学习笔记-可空类型
在C++和Java中对象有可能为nil,但是在swift中对象一般不能为nil,除非是可空类型同时swift提供了一些简洁的语法让我们安全地访问可空类型这一特性减少了类似(if (obj==nil)){…}的代码声明可空类型在普通类型后面加一个问号就成为了可空类型,普通类型必须显示地给出一个初始值,而可空类型不用,因为它有一个默认初始值nilvar intValue:Int?pri...原创 2018-10-18 01:41:10 · 667 阅读 · 0 评论 -
Swift学习笔记-枚举
定义枚举类型定义的语法和C/C++很像,只不过前面多了case语句enum TextColor{ case blue case black case green case red case white}创建枚举实例第一次创建枚举实例的时候必须指定枚举枚举类型和值,之后的代码可以省略类型//显示类型声明var color1:TextColor=...原创 2018-10-23 22:34:22 · 209 阅读 · 0 评论 -
Swift学习笔记-结构体和类
结构体结构体由属性和方法构成,其中属性可以是变量或者常量,可以在定义的时候给出属性的默认值struct Worker{ //身高 var height=170 //颜色 var color="yellow"}和枚举类型一样,结构体也是值类型,所以修改属性的方法也要标记为mutatingstruct Worker{ //身高 v...原创 2018-10-23 23:38:16 · 236 阅读 · 0 评论 -
Swift学习笔记-协议
Swift中的协议类似于Java中的接口,不过在Swift中,结构体,枚举,类都能使用协议基本用法import Foundation//声明协议protocol XYData{ var height:Int{get set} var color:String{get} func self2Str()->String}//实现协议struct Pers...原创 2018-10-29 21:43:03 · 287 阅读 · 0 评论 -
Swift学习笔记-扩展
扩展能给已有的类型(即使没有源代码)添加功能,包括计算属性,协议,初始化方法,新方法,嵌入类型,注意,扩展不允许添加存储属性类型别名使用typealias关键字可以给类型提供一个别名,例如下面代码中的XYString,它和String用法一样import Foundationtypealias XYString = Stringvar str1:XYString="abcdefg"...原创 2018-10-31 21:51:26 · 201 阅读 · 0 评论 -
Swift学习笔记-属性
属性分为存储属性与计算属性,存储属性可以有默认值,计算属性则根据已有信息返回某种计算结果。原创 2018-10-24 22:54:22 · 223 阅读 · 0 评论 -
Swift学习笔记-错误处理
错误分为可恢复的错误和不可恢复的错误,可恢复的错误指的是能预见并处理的错误,例如文件不存在,网络连接失败等;不可恢复的错误指的是一类特殊的bug,例如强制展开值为nil的可空实例,数组越界访问等;如果发生错误没有处理,程序就会停止运行。遗憾的是Swift中似乎只能处理可恢复的错误。断言Swift中使用assert添加断言,第一个参数表示要检查的条件,为true时什么也不做,为false时停...原创 2018-10-31 00:29:31 · 234 阅读 · 0 评论 -
Swift学习笔记-内存管理和ARC
在Swift中,由于值类型在传递过程会创建新的副本,所以你不需要做任何事情管理值类型的内存;而引用类型则不一样,它在传递过程中会创建新的引用,这些引用都指向同一块内存,当引用计数为0时,实例就会被回收,deinit方法将被调用;和OC一样,Swift也使用了自动引用计数(ARC)来管理类实例的引用计数。循环强引用下面代码中xiaoMing拥有book和milk,而book和milk也拥有x...原创 2018-11-07 00:05:20 · 338 阅读 · 0 评论 -
Swift学习笔记-Comparable和Equatable
在Swift中可以通过实现Equatable协议使自定义类型支持==以及!=这两种运算符;Comparable协议继承于Equatable,实现Comparable协议可以在Equatable的基础上使类型支持>,>=,<,<=四种运算符。import Foundationstruct Point:Comparable{ let x:Int le...原创 2018-11-07 00:28:15 · 1928 阅读 · 0 评论 -
Swift学习笔记-泛型
泛型能让我们使用的类型和函数使用未知的类型,许多内置类型,例如可空类型,数组和字典都是用泛型实现的。泛型类型下面的结构体实现了一个简单的栈,可以对Int类型执行push和pop操作。struct Stack{ var items = [Int]() mutating func push(newitem:Int){ items.append(new...原创 2018-11-04 23:55:30 · 218 阅读 · 0 评论 -
Swift学习笔记-协议扩展
在Swift中进行面向对象编程时,尽量使用协议和泛型,而不是类继承,因为过深的继承层次很容易让代码充满难以理解的类。协议扩展前面我们介绍过了类的扩展,协议的扩展也是类似的,协议扩展可以添加现有的计算属性和方法,不能添加存储属性。扩展不会增加协议的需求。下面的代码中,所有实现Worker协议的结构体都获得了一个getDesc方法。protocol Worker { var job...原创 2018-11-05 21:24:50 · 1222 阅读 · 0 评论 -
Swift中GBK编码转换
import Foundationextension String { init?(gbkData: Data) { //获取GBK编码, 使用GB18030是因为它向下兼容GBK let cfEncoding = CFStringEncodings.GB_18030_2000 let encoding = CFStringConvert...原创 2019-04-10 11:03:11 · 1688 阅读 · 0 评论 -
Swift实现RC4加解密
struct RC4 { var State : [UInt8] var I: UInt8 = 0 var J: UInt8 = 0 init() { State = [UInt8](repeating: 0, count: 256) } mutating func initialize(_ Key: [U...原创 2019-06-13 15:58:42 · 381 阅读 · 0 评论 -
Swift编程规范
@IBAction func phoneNumberTextFieldDidChange(_ sender: Any) { verificationCodeField.phoneNumber=phoneNumberTextField.text!}@IBAction func onResetPasswordButtonClick(_ sender: Any) { resetPa...原创 2019-06-25 16:57:55 · 243 阅读 · 0 评论 -
Swift学习笔记-初始化
结构体的默认初始化swift为结构体提供了默认初始化方法,当结构体所有属性都有默认值时,可以使用空白初始化方法struct Person{ var height=170 let color="black"}var person=Person()成员初始化方法是默认初始化方法的另外一种形式,注意常量属性如果有默认值则不能使用初始化方法,因为常量只能初始化一次struct...原创 2018-10-25 23:44:31 · 373 阅读 · 0 评论 -
Swift学习笔记-值类型与引用类型
Swift中Array,Dictionary,Int,String等都是用结构体来实现的,所以这些都是值类型,而Class则是引用类型值类型值类型在赋值或者参数传递的时候总会复制自己,Swift标准库中的值类型实现了写时复制功能,每次复制的时候都会共享同一片存储空间,只有真正改变实例数据时才会产生一份副本import Foundationvar str1="hello world"...原创 2018-10-29 00:41:58 · 285 阅读 · 0 评论 -
Swift学习笔记-基本知识
变量,常量,分号Swift中使用var声明变量,使用let声明常量,如果不指定类型,编译器会自动推断变量/常量的类型。注意在Swift中,代码结尾的分号是可选的,只有在一行内有多条代码才用分号分隔。import Cocoa//自动推断为Stringvar str = "Hello, playground"//输入str到控制台print(str)//常量let numb...原创 2018-10-14 17:58:22 · 192 阅读 · 0 评论 -
Swift学习笔记-数字
Int/Uint一个整数字面常量没有明确数据类型的时候,默认会被推断为Int 编译的目标平台为32位时,Int和Int32长度相同 编译的目标平台为64位时,Int和Int64长度相同 Uint为Int的无符号版本其他整数类型Int8,Int16,Int32,Int64 UInt8,UInt16,UInt32,UInt64使用max,min获取整数类型最大值与最小值pri...原创 2018-10-14 21:03:36 · 211 阅读 · 0 评论 -
Swift学习笔记-空格
Swift中运算符两边的空格必须是对称的,要么两边都没空格,要么两边都有空格(和空格数量无关) != ?? 等运算符左右两边必须有空格,原因是为了防止歧义let x=2let y=3//错误,左边有空格,右边无空格let value =x*y//错误,左边无空格,右边有空格let value= x*y//错误,乘法运算符两边空格不对称let value=x *ylet va...原创 2018-10-14 22:29:50 · 476 阅读 · 0 评论 -
Swift学习笔记-条件判断
圆括号在条件判断以及循环中,大多数圆括号都可以省略掉var x=2var y=3if x>3{ //}switch x {case 1: y=1default: y=2}while x>3{ }print(y)if语句Swift中的if语句和C/C++一样,只不过多了两个比较运算符===,计算两个实例是...原创 2018-10-14 23:41:04 · 347 阅读 · 0 评论 -
Swift学习笔记-数组
创建数组//创建空数组var strList1:Array<String>=[]var intList1:[Int]=[]//创建并初始化数组var strList2:Array<String>=["red","black"]var intList2:[Int]=[1,2,3,4]//使用类型推断创建数组var strList3=原创 2018-10-18 22:35:17 · 339 阅读 · 0 评论 -
Swift学习笔记-字典
字典是一种无序的容器类型,其中的元素为键值对(key-value pair),其中键类型必须是可散列的,swift的基本类型都是可散列的,例如String,Int,Float,Double,Bool创建字典//创建空字典var dict1:Dictionary<String,Double>=[:]var dict2=Dictionary<String,Double&g...原创 2018-10-18 23:56:50 · 184 阅读 · 0 评论 -
Swift学习笔记-集合
集合也是一种无序容器类型,且集合中的元素不能有重复的,适用于黑名单,白名单等需要快速查找的地方创建集合//创建空集合var whiteList=Set<String>()var blackList:Set<String>=[]//创建集合并填充值var colorList:Set<String>=["green",&原创 2018-10-19 00:20:40 · 197 阅读 · 0 评论 -
Swift学习笔记-循环
文章目录循环for-in循环while循环repeat-while循环break与continue循环for-in循环最简单的for-in循环如下,输出结果为0 1 2 3 4 5for i in 0...5 { print(i)}你也可以省略迭代器i,下面的代码会输出同样的结果,注意,swift中不支持++运算符var i=0for _ in 0...5{ pr...原创 2018-10-15 22:06:11 · 335 阅读 · 0 评论 -
Swift学习笔记-String
在Swift中,String由字符构成,而字符由一个或多个Unicode标量构成遍历字符串字符var str="秋天到了123"for c in str{ print("'\(c)'")}判断字符串是否为空var str="秋天到了123"print(str.isEmpty)获取字符串中字符数量var str=&原创 2018-10-16 23:23:51 · 187 阅读 · 0 评论 -
Swift学习笔记-函数
最简单的函数func printHello(){ print("hello world")}printHello()带参数的函数func printHelloWithName(name:String){ print("hello \(name)")}printHelloWithName(name: "xy")外部参数swift中参数名可以填两个,前者是外部...原创 2018-10-22 22:39:35 · 265 阅读 · 0 评论 -
Swift学习笔记-闭包
闭包(closure)是一种更加紧凑,轻量的匿名函数,类似于Java中的lambda表达式swift中的闭包语法如下{(parameters)->returnType in...}接下来我们看一段数组排序代码, 该代码将函数sortAsc当做参数传递let counts=[1,10,6,2,50,8,24]func sortAsc(n1:Int,n2:Int)->...原创 2018-10-22 23:49:31 · 204 阅读 · 0 评论 -
Swift中Data,String,[UInt8]的相互转换
[UInt8],Data,String互转原创 2019-07-03 12:18:03 · 15709 阅读 · 0 评论