Swift基础知识(二)

前端之家收集整理的这篇文章主要介绍了Swift基础知识(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.我们一直讨论过的Optional就是一个enum类型

enum Optional<T> {
     case None
     case Some<T>
}

如:

let x:String? = nil
//实际等于
let x = Optional<String>.None

let x:String? = "hello"
//实际等于
let x = Optional<String>.Some("hello")

所以说解包一个optional (感叹号加后面)
let y = x!
实际上等于:

switch x{
     case Some(let value): y = value;
     case None: //抛出一个异常
}

2.如果要遍历一个Array 可以使用for in

//用一个tuple(元祖)配合for in 遍历一个Dictionary
for (key,value) in dictionary {
     print("key is \(key) = \(value)")
}

3.range的用法

let array = ["a","b","c","d","e"]
//[c,d,e]
let subArray = array[2...4] 
//[c,d]
let subArray1 = array[2..<4]

4.函数的参数名

在swift中如果一个函数需要多个参数,一般第一个参数不需要externalName 因为一般函数的第一个参数跟函数名要有对应关系

比如如下一个函数

func getSomeById(id:String,secondExternalName secondInternalName:String){
   ...
}

函数名是getSomeById那么一般第一个参数就是id
但是第二个参数需要加上externalName,因为对于第二个参数用户并不知道要传入什么信息。所以这个时候externalName就显的很重要了
所以调用起来如下:

let result = getSomeById(1,secondExternalName:2)

5.什么时候,并且何时使用willSet/didSet:

很常见的用在UI的更新方面,比如你要更新某个数据,更新数据一般意味着界面也要做出更新,那么在willSet和didset{}里面就可以对界面做对应的更新

需要注意的是:用 willSet /didSet不能和get/set共同使用的,在使用willSet /didSet时,变量需要有初始值。

如果在一个属性声明前加上 lazy 关键字 表示这个属性只有在被用到的时候才会被初始化。
只有var申明的属性才可以搭配lazy关键字

6.Array的一些总结

1.一个Array可以用 += 符号加上另一个Array组合成一个新的Array

这里要注意的是 += 号后面的参数必须要是一个Array
所以如果你要往一个Array中加入一个String,必须写成 a += [“test”]

2.可以通过 array.first 和 array.last 来返回array的第一个个元素和最后一个元素

3.append(T)——可以往Array中添加一个元素

4.insert(T,atIndex: Int)—— 往Array中指定位置添加一个元素

var a = [a,b,c]
a.insert(d,atIndex: 1)  //a = [a,c]

5.splice(Array,atIndex: Int)—— 往Array中的指定位置添加一组数组

var a = [a,c]
a.splice([d,e],atIndex:1) //a = [a,e,c]

6.removeAtIndex(Int) ——移出指定位置的元素

7.removeRange(Range)——移出指定范围的元素

var a = [a,c] 
a.removeRange(0..<2),a = [c]

8.replaceRange(Range,[T])

var a = [a,c] 
a.replaceRange(0...1,with:[x,y,z]),a = [x,z,b])

9.sort((T,T)->bool) ——对array进行排序,参数是一个函数,判断两个值谁更大。

var a = [a,c]
a.sort( $0 < $1)

10.filter(includeElement:(T) -> bool) -> [T]—— 返回一个新的数组过滤掉你不想要的元素

11.map( transform: (T) -> U) -> [U]——array映射,返回一个新array,旧array元素通过transform映射函数生成新array中的元素

let Stringified:[String] = [1,2,3].map( "\($0)" )

12.reduce(inital:U,combine:(U,T) -> U ) -> U——通过指定的计算方法,把一个数组计算生成一个参数

let sum:Int = [1,3].reduce(0,{ $0 + $1 }) 
====> 0 + 1 + 2 + 3
@H_489_301@13.Array 和 String可以互相转换
let a = Array("abc") //a = ["a","c"]
let s = String(["a","c"]) //s = "abc"

猜你在找的Swift相关文章