强制拆包的目的

2024-02-03

在 swift 文档中,您可以找到以下内容:

if convertedNumber != nil {
    println("convertedNumber has an integer value of \(convertedNumber!).")
}
// prints "convertedNumber has an integer value of 123." 

有了这个解释

一旦确定可选值确实包含值,您就可以通过在可选值名称末尾添加感叹号 (!) 来访问其基础值。感叹号有效地表示:“我知道这个可选值肯定有价值;请使用它。”这称为强制展开可选值:

好吧,明白了,但是它有什么用呢?如果我不强制展开的话,情况就不一样了:

if convertedNumber != nil {
    println("convertedNumber has an integer value of \(convertedNumber).")
}
// prints "convertedNumber has an integer value of 123."

谢谢你启发我:)


如果我不强行拆开包装,情况就不一样了

不。Optional 是一种不同的类型。如果您实际上在不展开的情况下运行上面的代码(这在操场上是微不足道的),您可以立即看到差异。

可选打印为Optional(123),展开的打印件为123。如果不先将其解包,则无法将可选值传递给需要特定类型的内容。

理解Optional是一种完全不同的类型,而不是特定类型的专门类型(例如,没有“可选的Int”,有一个包含Int的Optional)是理解这一点的关键。我已经写过相关内容here http://commandshift.co.uk/blog/2014/06/11/understanding-optionals-in-swift/如果您对更长的解释感兴趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制拆包的目的 的相关文章

  • 在 Swift 中删除字符串中第一个字符的最简洁方法是什么?

    我想删除字符串中的第一个字符 到目前为止 我想到的最简洁的事情是 display text display text substringFromIndex advance display text startIndex 1 我知道我们不能用
  • 如何在 X 秒后更改 NSTimer 的 NSTimeInterval?

    我正在 swift 2 中制作一个应用程序 其中有两个计时器 10 秒后我希望另一个计时器走得更快 我尝试过这样做 但它不起作用 我正在尝试更改 vartime to 1 IBOutlet var displayTimeLabel UILa
  • 此应用程序的包标识符与其代码签名标识符不匹配

    当我尝试在设备上构建并运行应用程序时 出现以下错误App installation failed This application s bundle identifier does not match its code signing id
  • if let 不解开 MKAnnotation 的 title 属性的可选值

    我想用 if let 语句解开可选值 我需要获得 MKAnnotation 的标题 func mapView mapView MKMapView didSelect view MKAnnotationView if let title vi
  • 在 Swift 中使用 UIActivityIndi​​catorView 和 UIWebView

    当 url 加载到 WebView 中时 我试图在我的应用程序中向用户显示活动指示器视图 我尝试过使用 Activity startAnimating activity stopAnimating 并尝试将它们放入函数等中 但没有任何运气
  • iOS 联系人 如何通过电话号码获取联系人

    我只想通过电话号码获取联系人姓名 我尝试过这个 但速度太慢 CPU 速度超过 120 let contactStore CNContactStore let keys CNContactGivenNameKey CNContactFamil
  • 如何缩放 CAShapeLayer

    我很快就成功制作了动画bezier path它包含在一个CAShapeLayer 我唯一的问题是将其实现到其他屏幕尺寸上 有谁知道我如何扩展CAShapeLayer里面有路径吗 即使其变为原始大小的一半 使用这个函数 var shapela
  • 如何在 RealityKit 中录制视频?

    我在 Xcode 中有一个 RealityKit 项目 我想记录ARView 我考虑过ReplayKit 但那是为了屏幕录制 我只想录制ARView与它的相机饲料 我考虑过 AFathi 的开源项目 ARVideoKit 但它不支持 Rea
  • Firebase获取孩子ID swift ios

    我的 Firebase 看起来像这样 贝娄Active Orders看来childs根据他们的不同有不同的名字UID 用户身份 这是我的代码 用于获取孩子的 ID 无论孩子的名字是什么 但它似乎根本不起作用 获得的正确方法是什么child
  • SwiftUI 关闭多个模态表

    我在用 sheet isPresented self showModal 在我的根视图中呈现一个模式 在模态中 我正在使用NavigationView引导用户浏览各个页面 对于用户配置文件构建器 在导航堆栈的最后一页中 我正在使用 Envi
  • 使用Combine,如何在网络请求后取消分配订阅

    如果您使用组合来处理网络请求URLSession 那么你需要保存Subscription 又名 AnyCancellable 否则它会立即释放 从而取消网络请求 稍后 当网络响应被处理后 您想要取消分配订阅 因为保留它会浪费内存 下面是执行
  • 在 Swift 中使用 NSCoding 归档可选结构数组?

    我已经在 Obj C 中完成了大量 NSCoding 归档 但我不确定它如何处理 Swift 中的结构 也不确定它如何处理具有可选值的数组 这是我的代码 public struct SquareCoords var x Int y Int
  • CGFloat 和 NSNumber 之间的转换,无需不必要地提升为 Double

    众所周知 CGFloat 在 CoreGraphics UIKit 等中普遍存在 可以是 32 位或 64 位浮点数 具体取决于 处理器架构 In C CGFloat它是一个类型别名 到float or double 在 Swift 中它被
  • 快速以编程方式打开 viewController

    我想通过代码在按钮上打开新的 UIViewController 我已经在故事板中制作了控制器 只想链接它 而且我不想使用 XIB 接口或 nibName 要打开新视图控制器 您需要在按钮单击事件中写入以下行 self performSegu
  • 当我关闭应用程序时,我收到来自调试器的消息:由于信号 15 而终止

    我该如何解决这个问题 我不知道它是否影响了我在此链接中的问题我之前关于核心数据的问题 https stackoverflow com questions 30012086 swift core data does not store the
  • 使用 firebase 过滤分页列表

    我正在尝试使用 firebase 和 swift 制作一个分页过滤列表 但请随意用您最喜欢的编程语言回答 而不过滤客户端上检索到的数据 假设我有这个结构 matches match 1 name Match 1 users user 1 o
  • 根据 Swift 中的列表选择在 ViewController 之间传递值

    我试图将 listView 选择的选定索引号从一个 ViewController 传递到另一个 ViewController 但遇到了 tableView didSelectRowAtIndexPath 委托运行时间稍晚于prepareFo
  • 在 Pages 文稿中打开文本—Swift

    在我的 Swift 2 应用程序中 用户通过文本字段创建一串文本 然后将其共享给另一个应用程序 现在 我只能将文本共享为 txt 文件 这不提供选项Open In Pages当我打开系统共享对话框时 如何才能让用户可以选择将输入的文本作为
  • 如何使用逗号和行分隔符对字符串进行标记

    我正在 Swift 中制作一个简单的 String Tokenizer 就像在 Java 中一样 但这对我来说确实不起作用 我的数据源中每行的末尾用 分隔 数据用逗号分隔 例如 字符串 1 字符串 2 字符串 3 字符串 1 字符串 2 字
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么

随机推荐