Swift 可选链

Swift 可选链

可选链是一种用于调用属性、方法和下标的过程,这些属性、方法和下标可能当前为nil。如果可选项有值,则属性、方法或下标调用成功;如果可选项为nil,则属性、方法或下标调用返回nil。

您可以将多个查询链接在一起,但如果链中的任何部分为nil,则整个链条将失败。

可选链作为强制解包的替代方案

通过在调用属性、方法或下标的可选值后面放置一个问号(?),可以指定可选链,如果可选项不为nil,则调用属性、方法或下标。

可选链 强制解包
当可选项为nil时,可选链会失败。 当可选项为nil时,强制解包会触发运行时错误。
用?操作符放在可选值之后,调用属性、方法或下标。 用!操作符放在可选值之后,强制解包值,调用属性、方法或下标。

可选链的示例(在基类中未声明值的情况下)

可选链的结果与预期的返回值相同,但封装在可选类型中。这意味着通过可选链访问时,通常返回Int的属性将返回Int?。

让我们举一个示例来看看可选链和强制替代之间的区别:

使用?运算符的可选链程序

class Exam {
   var student: Toppers?
}
class Toppers {
   var name = "Intelligent"
}
let stud = Exam()
if let studname = stud.student?.name {
   print("Student name is \(studname)")
} else {
   print("Student name cannot be retrieved")
}

输出:

Student name cannot be retrieved 

在这里, Exam 是一个类名,包含了 student 作为成员函数。子类被声明为 Toppers ,名字是一个成员函数,它被初始化为” Intelligent “。通过创建一个可选的实例”stud”来初始化对超类的调用。

因为在基类中没有声明值,所以nil被存储和由else处理程序块显示。

用于可选链接和访问属性的模型类

当你必须声明多个子类作为模型类时,它被使用。它使你能够定义复杂的模型,并访问方法、属性、下标、子属性。

示例

class rectangle {
   var print: circle?
}
class circle {
   var area = [radius]()
   var cprint: Int {
      return area.count
   }
   subscript(i: Int) -> radius {
      get {
         return area[i]
      }
      set {
         area[i] = newValue
      }
   }
   func circleprint() {
      print("The number of rooms is \(cprint)")
   }
   var rectarea: circumference?
}
class radius {
   let radiusname: String
   init(radiusname: String) { self.radiusname = radiusname }
}
class circumference {
   var circumName: String?
   var circumNumber: String?
   var street: String?
   func buildingIdentifier() -> String? {
      if circumName != nil {
         return circumName
      } else if circumNumber != nil {
         return circumNumber
      } else {
         return nil
      }
   }
}
let rectname = rectangle()
if let rectarea = rectname.print?.cprint {
   print("Area of rectangle is \(rectarea)")
} else {
   print("Rectangle Area is not specified")
}

输出:

Rectangle Area is not specified

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程