文档章节

swift的学习笔记

前端届的科比
 前端届的科比
发布于 2015/09/05 23:37
字数 722
阅读 130
收藏 4

数组,字典,集合

var arr = []
var dict = {1:"a"}
var B:Set<Int> = []
var C = Set<Int>([])

集合的交集、并集、减集,异或操作

var a = Set<Int>([1,2,3])
var b = Set<Int>([2,3,4])

a.intersect(b) // -> {2,3}
a.union(b)  // -> {1,2,3,4}
a.subtract(b) // -> {1}
b.exclusiveOr(b) // -> {1,4}

枚举的Integer的递增属性:

enum test:Int{
  case a=1, b, c, d, e, f, g
}

let c:test = .c
c.rawValue // -> 3

声明类型:

enum test {
  case a(Int, String) // ->声明了一个turple
  case b(String) // -> 声明了一个String
}
let a = test.a(100, "ok")
let b:test = .b("soso")

注意的是,swift里的turple, array, dictionary都是按值传递的,而function, closure才是按地址传递

func的参数默认是常量参数,要加var在前面才变成变量参数,也就是说可以在func内更改参数值

func test(a:String, var b :Int){
    b = a.toInt()!
}

也就是说,默认的参数是以let来声明的。

另外,默认不管参数是什么类型的,都是传值的,要想实现传地址的传参,那么要使用inout

func test(inout a:String, inout b :Int){
    a = "100"
    b = 200
}

在调用的时候要加个&在前面调用:

var a = "300"
var b = 300
test(&a, &b)

数组的遍历,同时获取index,和key

var arr = [1,23,3]

for (index, item) in enumerate(arr) {
    println(index)
    println(item)
}

引入Foundation使用更多字符串的功能

import Foundation

var str = "Hello, kobe"

str.capitalizedString
str.uppercaseString
str.lowercaseString

// 等于.trim()
str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

//等于.trimBy([" ","!",","])
str.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: " !,"))

// 等于js的split(" ")
str.componentsSeparatedByString(" ")

// 等于js的split(" "),split("!"),split(",")
str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: " !,"))

// join方法
var str2 = "-"
str2.join(["2005","08","11"])

聚合运算符

a ?? b // 等于 nil != a ? a! : b

生成一个唯一的ID,uuid

func getUUID() -> String {
    let uuid = NSUUID().UUIDString
    return uuid
}

如何对输入框实现点击空白处和return键收起键盘 首先继承"UITextFieldDelegate"类, 再绑定view, inputItem.delegate = self 然后加上下面俩方法:

func textFieldShouldReturn(textField: UITextField) -> Bool {
  textField.resignFirstResponder()
  return true
}

override func touchesEnded(touches: NSSet, withEvent event:UIEvent){
  inputItem.resignFirstResponder()
}

class和struct的区别是,struct是放在stack里,class是放在heap,所以struct是值传递,整个复制,class是指针传递

自动给view添加constraints

首先得保证你的项目开启了AutoLayout 在storyboard里选中view,然后点击在视图底部第3个按钮"resolve auto layout issues"即可

在ViewController之间传递值

1、为View绑定一个Controller:新建一个swift文件作为controller,然后copy原有的controller原始模板代码过来,然后在View的属性面板选择好它的Class 2、在传递数值的Controller,重写它的这个方法:override func prepareForSegue

  • 定义好segue的标识符,并在代码上用segue.identifier来标识
  • 取segue的目标:var vc = segue.destinationViewController as TargetViewController,在vc变量里给属性赋值就等于传递数值了

修改结构体或者枚举的属性,使用mutating

struct Point{
  var x = 0.0, y = 0.0
  mutating func moveByX(deltaX:Double, y deltaY:Double){
    x+= deltaX
    y+= deltaY
  }
}

而类class是不用mutating

class pp {
  var x = 0.0

  func change(xx: Double) {
    x = x + xx
  }
}

© 著作权归作者所有

上一篇: resources_pc
下一篇: mac的学习笔记
前端届的科比
粉丝 21
博文 64
码字总数 51572
作品 0
深圳
私信 提问
Swift 个人学习笔记 - 05: 集合类型(Array, Set, Dictionary)

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/02/22
0
0
Swift 个人学习笔记 - 06: 控制流

本文章纯粹是中文版《The Swift Programming Language》的学习笔记,所以绝大部分的内容都是文中有的。本文是本人的学习笔记,不是正式系统的记录。仅供参考 以下还是有很多没看懂、不确定的...

amc
2017/02/22
0
0
Go语言基础学习:变量

Go语言基础学习(一)变量 猜你喜欢 Ceylon语言学习笔记(1) 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 go语言学习-常量 GO语言学习-复杂类型(2) Go语言学习...

d_watson
2016/04/15
13
0
2017年年终总结

前言 不知不觉,2017年又接近尾声了,又到了该写年终总结的时候了,往年这个时候都会熙熙攘攘,各大平台提早预热过年的气氛,而今年显得格外的平静,这可能正如我的现在的心境,波澜而不惊!...

韩俊强
2018/01/03
0
0
《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字

Swift 2.0学习笔记(Day 3)——Swift 2.0之后增加的关键字 原创文章,欢迎转载。转载请注明:关东升的博客 看了之前的学习笔记知道了什么是关键字,现在提示各位在Swift 2.0之后增加defer、...

智捷课堂
2015/08/20
155
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部