美文网首页Swifty CodingSwift开发程序员
Swift语言自带的实用技巧!!!

Swift语言自带的实用技巧!!!

作者: Aaronn | 来源:发表于2017-01-02 17:37 被阅读174次

开胃菜

交换两个变量的值,使用元组(a,b) = (b,a)
系统自带的交换函数 : swap(&a,&b)

数组


获取数组的基本信息 (查询)

  • count : 元素个数
  • isEmpty : 是否为空,返回布尔值
  • [] 危险,可能越界 : 传入下标,取出对应下标,或者针对对应下标的元素进行修改
  • first,last : 取出第一个和最后一个元素####
  • minElement,maxElemtnt : 最小/最大元素
  • contains : 包含 -> Bool
  • indexOf : 查询下标
  • for-in : 遍历
    • enumerat : 同时遍历下标和元素

增 (必须是var)

  • append : 添加元素
  • += : 添加数组
  • insert 危险,可能越界: 插入元素到index,插入后的元素在该位子,原来的元素后推

  • removeLast
  • removeFirst
  • removeAtIndex() 危险,可能越界
  • removeRange : 0..<4 可以给一个范围
  • removeAll

  • [] 危险 : 直接修改下标
  • [0..<4] = [] : 先删除原来的区间,再添加新的数组到0下标的位置
  • sort : 排序,返回从小到大排序好的数组.
  • sortInPlace : 排序后修改原来的数组
  • sort(isOrderedBefore: ) : 根据传入的函数/闭包(匿名函数) : (Int,Int) -> Bool 来排序
    • sort(>) >比较符号本身就是一个函数

字典


  • isEmpty : 是否为空 -> Bool
  • Array(dict.keys) : 获取所有的键,转换为数组
  • Array(dict.Values) : 获取所有的值,转换为数组
  • for(key,value) in dict : 通过元组,第一个是key,第二个是value,名字可以自己取.来遍历
  • = : 对比字典的键值对是否都一样.

增,改

  • [] : 增加值或者修改值
  • updateValue : 会返回旧的值
var dict : [String : String] = [:]
dict.updateValue("123456", forKey: "password") // 返回nil
let oldPassword = dict.updateValue("123456", forKey: "password")//返回 "123456"
if let oldPassword = oldPassword , dict["password"] == oldPassword{
    print("两次修改的密码一样,请重新输入")//会打印
}

删除

  • dict["key"] = nil
  • removeValueForKey("key") : 返回旧的值,如果存在.否则返回nil
  • removeAll

集合


  • 声明var skills : Set<String> = ["Swift","OC"]
  • 集合是无序的,数组是有序的
  • 集合中不会重复
  • Set() 将数组强转为集合

  • isEmpty : 是否为空
  • fitst : 因为是无序的,所以认为是随机取出
  • contains : 是否包含
  • for skill in skillS : 遍历集合

  • insert : 如果已经存在不会改变集合,->返回整个集合

  • remove : 删除元素,如果存在返回删除的元素

没有接口直接修改.

并集

  • setA.union(setB) : 并集两个集合,返回两个集合中所有的元素去重. 不会修改集合
  • setA.unioInPlace(setB) : A集合会改变
    没有inPlace是+
    有是+=

交集

setA.intersect(setB) : 返回共有的元素
有inPlace就会修改A集合为只有共有的元素

集合减法

setA.subtract(setB) -> A - A.union(B)
setA.subtract(setB) -> A -= A.union(B)

亦或,判断只出现了一次的元素. 两个集合的并集减去交集

  • setA.exclusiveOr(setB) -> setA + setB - setA.union(setB)

判断子集

  • setA.isSubsetOf(setB) -> B是不是A的子集
  • setA.isStrictSubsetOf(setB) -> B是不是A的真子集

超集 和子集相反

  • setA.isSupersetOf(setB)
  • setA.isStrictSupersetOf(setB)

相离

  • setA.isDisjoinWith(setB) -> 有没有交集

字符串


Character

一个中文,表情,UTF-8码,注音符等都只占一个Character.
因为Swift的字符串是基于unicodescalar的.

`str.characters.count` 即人类理解的几个字符
index

因为以上原因,String不可以直接使用[]来取出字符. 只能使用Index

let str = "123456789";
    let subFrom3 = str.substring(from: str.index(str.startIndex, offsetBy: 3))
    let subTo3 = str.substring(to: str.index(str.startIndex, offsetBy: 3))
    
    print(subFrom3,subTo3)
    
    //截取区间
    let subRange = str.index(str.startIndex, offsetBy: 2)..<str.index(str.endIndex, offsetBy: -3)
    let subRangeStr = str.substring(with: subRange)
常用方法
  • uppercased() : 全部转换为大写
  • lowercased() : 全部转换为小写
  • hasPrefix() :包含前缀 -> Bool
  • hasSuffix() : 包含后缀 -> Bool
  • contains() : 是否包含 -> Bool
  • NSString as String : 将NSString 转换成String. 这样来使用NSString库中的方法

相关文章

网友评论

本文标题:Swift语言自带的实用技巧!!!

本文链接:https://www.haomeiwen.com/subject/gsgwvttx.html