Swift基础进阶

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

Swift基础进阶

可选型的概念

数据类型+?将会构成一种新的类型,可选型,String?为字符串可选型,,在swift中,空的概念略有不同,java中,如果一个对象变量,没有指向,为null;一个int类型的变量如果没有初始化,值为0,null和0 意为没有,在swift中,空是一种完全独立的数据类型,nil的位置和Int,String的地位是一样的,他不是对象或者数据的一种特殊状态,而是一种新的对象。这也就意味着代码中(1)的部分是编译错误的,会提示,nil类型是不能和String类型进行的比较的,该设计的目的是为了使swift更具安全性,因为任何对象都不能设置为nil,就如同String类型的数据不能设置为int类型的数据,他们是完全不同的对象,可以避免潜在空指针的发生。

  1. //(1)
  2. var str = "abc"
  3. if(str == nil){
  4.  
  5. }
  6.  
  7.  
  8. //String? 为String可选型,他意味着这种类型,可以为nil,还是那句话,可选型和nil不是一个类型的特殊状态,他是一种新的类型。
  9.  
  10. //2
  11. var optionalStr:String? = "hello"
  12. optionalStr = "world"
  13. print(optionalStr == nil)
  14.  
  15. var greet = "hey"
  16.  
  17. if let name = optionalStr{
  18. greet = "hello \(name)";
  19. }
  20. print(greet)
  21.  
  22. if(optionalStr != nil){
  23. print("optional str is not nil")
  24. }

where与模式匹配

  1. //switch中使用where语句
  2. let point = (3,3)
  3. switch point {
  4. case let(x,y) where x == y:
  5. print("x == y")
  6. case let(x,y) where x == -y:
  7. print("x == -y")
  8. default:
  9. print("rst is \(point.0),\(point.1)")
  10. }
  11.  
  12. //switch中使用运算符
  13. let age = 19
  14. switch age{
  15. case 10 ... 19:
  16. print("teenager")
  17. default:
  18. print("not teenager")
  19. }
  20.  
  21. //if中使用模式
  22. if case 10...19 = age where age > 18{
  23. print("teenager and in colldge")
  24. }
  25.  
  26. //if中使用模式和where语句
  27. let vector = (4,0)
  28. if case (let x,0) = vector where x > 2 && x < 5{
  29. print("it is vector")
  30. }
  31.  
  32. //if中使用模式+where+运算符
  33. for case let i in 1 ... 100 where i % 3==0{
  34. print("i is \(i)")
  35. }

guard

  1. //guard else 防止数据错误,也可以认为是需要满足的一种先决条件
  2. //例如下面money>price,capacity > volume是必须满足的条件,简化语法,防止错误
  3. func buy(money:Int,price:Int,capacity:Int,volume:Int) -> Bool{
  4. guard money > price else {
  5. print("not money")
  6. return false
  7. }
  8. guard capacity > volume else{
  9. print("not volume")
  10. return false
  11. }
  12. return true
  13. }

String

  1. //字符串
  2. var originStr = "this is str"
  3. originStr = "this is new str"
  4. //定义一个空字符串
  5. let emptyStr = ""
  6. //判空操作
  7. print(emptyStr.isEmpty)
  8. //合并字符串
  9. var rstStr = originStr + emptyStr
  10. //使用+=,此时rstStr必须是变量
  11. rstStr += originStr
  12. //字符串插值
  13. rstStr = "this is new str and insert \(100)"
  14. //转义字符 \
  15.  
  16. //遍历字符串
  17. for c in originStr.characters{
  18. print(c)
  19. }
  20.  
  21.  
  22. //Character
  23. let cc:Character = "!"
  24. originStr.append(cc)
  25.  
  26. //字符串长度,基于unicode码,也就是说不管是3个汉字或者3个字母,它的count都是3
  27. let englishLetter = "abc"
  28. let chinseLetter = "慕课网"
  29. let emojiLetter = "������"
  30. let unicodeLetter = "\u{1f60e}\u{0301}"
  31. print(englishLetter.characters.count)
  32. print(chinseLetter.characters.count)
  33. print(emojiLetter.characters.count)
  34. print("enlish is \(englishLetter) chinse is \(chinseLetter) emoji is \(emojiLetter) unicode is \(unicodeLetter)")
  35.  
  36.  
  37. //索引访问字符串,需要使用String.Index类来访问
  38. //[startIndex,endIndex)
  39. let startIndex = originStr.startIndex
  40. let endIndex = originStr.endIndex
  41. print("index is \(startIndex) and content is \(originStr[startIndex])")
  42. //向后n个
  43. startIndex.advancedBy(6)
  44. //前面一个位置
  45. endIndex.predecessor()
  46. //后面一个位置
  47. startIndex.successor()
  48.  
  49.  
  50. //String的一些API
  51. //Range<Index>类型
  52. let range = startIndex.advancedBy(3) ..< endIndex
  53. originStr.replaceRange(range,with: "!!!")
  54. originStr.appendContentsOf("xxx")
  55. originStr.insert("z",atIndex: originStr.endIndex) originStr.removeAtIndex(originStr.endIndex.predecessor()) originStr.removeRange(originStr.endIndex.advancedBy(-2)..<originStr.endIndex)
  56.  
  57. print("upper \(originStr.uppercaseString) low \(originStr.lowercaseString) First up \(originStr.capitalizedString)")
  58. originStr.containsString("")
  59. originStr.hasSuffix("")
  60. originStr.hasPrefix("")
  61.  
  62. //NSString
  63. let s2 = NSString(format: "one third is %.2f",1.0/3.0)
  64. print("转换 \(s2 as String)")
  65.  
  66. let nsStr:NSString = "one third is 0.33"
  67. nsStr.substringFromIndex(4)
  68. nsStr.substringFromIndex(3)
  69. nsStr.substringWithRange(NSMakeRange(4,5))
  70.  
  71. let s6 = " --- Hello --- " as NSString
  72. //去掉空格和-
  73. print(s6.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:" -"))

猜你在找的Swift相关文章