class - 快速可选的意外错误

标签 class swift option-type

我是新来的。我对一个错误感到困惑。此快速代码导致我无法理解的错误。它仅来自 Apple 文档“Optional Chaining as a Alternative to Forced Unwrapping”

class Person {
    var residence: Residence?
}
class Residence {
    var numberOfRooms = 1
}

let john = Person()
john.residence = Residence()
john.residence.numberOfRooms = 5   

//此处出现错误:“住宅?”没有名为“numberOfRooms”的成员

最佳答案

residence Person的属性(property)是可选的,所以为了访问它的内容,你必须打开它。您可以使用可选链接来做到这一点:

john.residence?.numberOfRooms = 5
              ^

这意味着:如果 residence 不为 nil,则继续计算表达式右侧的内容,否则取消。

这个错误似乎是无稽之谈,因为 Residence确实有一个名为 numberOfRooms 的属性.重点是 john.residence是可选类型,可选类型是枚举的实例,Optional<T> - 没有 numberOfRooms属性(property)。使用可选链接 Residence instance 从枚举中解包(即可选),因此错误消失,因为 Residence具有该属性。

更多信息请访问 Optional Chaining (注意这是问题中提到的文档)

关于class - 快速可选的意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26631073/

相关文章:

c# - 在 C# 中使用 F# 选项类型

python - 有没有办法将 __len__ 或 __eq__ 等方法实现为类方法?

javascript - JS ECMAScript 6 中是否继承了构造函数?

php - AWS S3 PHP SDK,未找到 S3Client 类

Swift CoreAnimation : zPosition should be within (-FLT_MAX, FLT_MAX) 范围

swift - 与服务器同步核心数据 - 多次添加相同的对象

java - 如何初始化 Optional<List<T>>?

ios - 可选类型 'UIImage?' 的值未展开

class - 为什么我不能 "implements"TypeScript 2.4+ 中的全可选接口(interface)?

swift - 如何将热敏蓝牙打印机连接到 iOS 设备