问题标签 [swift-optionals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
38 浏览

ios - 为什么 if != nil 有时仅在使用应用程序期间有效?

我遇到了一个问题,需要你的帮助。我正在开发一个应用程序来管理事件,当应用程序加载时,所有帖子都会按预期显示,无论是否有图像进入帖子。如果我添加一个包含图像的新帖子,它会正确保存并返回到显示新帖子的滚动视图,如果我编辑任何有图像的项目并在保存时保留图像或将图像添加到没有图像的帖子中在编辑之前它保存得很好,并且帖子立即显示到滚动视图中。问题是如果我尝试创建没有图像的新帖子,或者如果我编辑删除图像并保存的帖子,应用程序由于展开选项而崩溃,但奇怪的是我正在将 nil 值检查到滚动视图的位置显示图像。

有任何想法吗 ?我将非常感谢您的支持。

0 投票
1 回答
31 浏览

exception - 尝试?在 Swift 4 中返回双可选

有很多类似的问题,但没有人描述如何使用try?+ double optional 处理异常。

我知道 str1 不会产生异常。这只是一个例子:

一种可能的解决方案是 replace try?-> try

但是可以try?像下面这样保存吗?

let str2: String? = try? ...//do something with str1 in the same single line

PS 在 Swift 5 中,初始代码可以工作,但我需要在 Swift 4 中使用它(升级到 Swift 5 需要对项目进行重大更改)

0 投票
1 回答
61 浏览

ios - Swift 安全展开可选的无冗余类常量

我试图在我的代码中加入更多结构,所以我正在实现这个UserDefaultsService

但如您所见defaults,是可选的。我知道我可以安全地打开它,guard例如每次我使用它时,但有没有更好/更清洁的方法来做到这一点?我在想的是只打开一次,然后我可以在UserDefaultsService.

0 投票
0 回答
46 浏览

swift - 如何快速解开可选字典?

我有一本字典,包含在一个名为optTest. 打开可选的包装后,它看起来像这样:

鉴于optTest,我试图fileName从这个可选中检索但遇到了一些麻烦。我试过这个:

if let optTest = optTest但我收到编译器的投诉。有人知道怎么做吗?

编辑:此可选是此处定义的回调的一部分:

0 投票
1 回答
48 浏览

swift - Swift:如何在三元检查中使用可选的禁用按钮

我有一个简单的 JS 任务,但我不知道如何使用 Swift 来完成它。请帮助我理解并做到这一点。

我只需要检查状态值是否为nil,然后禁用按钮。

0 投票
2 回答
50 浏览

ios - 防止这种与 Optional 相关的崩溃的最佳方法是什么?

语境

我是学习 Swift 的初学者,我正在努力确保我理解这个错误“修复”。我跟着一个 Youtube 视频展示了如何在 Xcode 中创建一个计时器。我改变了一些东西以努力学习一些东西,但出现的问题来自原始代码。

错误

每次我启动模拟器时,如果我在没有先启动计时器的情况下按下停止或重置按钮,应用程序将崩溃并在同一行显示此错误timer.invalidate()

在隐式展开可选值时意外发现 nil

我的修复

为了解决我添加的问题?,使其timer?.invalidate()如下面的代码所示。我在谷歌搜索后尝试了这个,以便对正在发生的事情有一个非常松散的了解。

这是否有效,因为计时器尚不存在,因此它是“nil”?

这是防止崩溃的最佳方法吗?似乎我也可以将变量 timer 改为使用?并让它工作,但只有在添加?到 step 函数中的 timer.invalidate() 行以及其他行之后。显然,我需要重新了解我对 Optionals 的理解。

0 投票
1 回答
45 浏览

swift - 如何从另一个视图控制器访问插座?(迅速)

我是 Swift 编程的新手,我正在尝试制作一个简单的应用程序,它提出了一个挑战,然后你可以通过按下一个按钮来完成。然后在一个单独的视图控制器中,当您完成一定数量的挑战时解锁图像。

在 Home View 控制器中有一个按钮,按下该按钮会将我的计数变量增加一。基本上我想检查该计数是否高于某个数字,如果是,我想允许看到图像。

这是我检查徽章功能:

问题是我收到一个错误,“在隐式展开可选值时意外发现 nil”。我已经尝试了很多不同的方法来解决这个问题,但都没有成功。任何帮助将不胜感激。谢谢!

这里是我的另一个视图控制器供参考:

0 投票
2 回答
59 浏览

ios - 如何解开剩余的秒数以防止它为零?

为什么我在展开 Optional 值时得到“意外发现 nil?我检查了 timerSeconds 的值,它被正确地分配给了我想要分配的值。但是,当我调用函数 StartTimer 时,我的应用程序崩溃了。

300 EggTimer/ViewController.swift:30: 致命错误:在展开可选值时意外发现 nil 2021-06-02 19:17:04.380375+1000 EggTimer[27674:932041] EggTimer/ViewController.swift:30: 致命错误:意外在展开可选值 (lldb) 时发现 nil

}

0 投票
1 回答
65 浏览

swift - 使用 if let... 不明白数据来自哪里

我正在关注 YouTube 上的斯坦福 CS193 SwiftUI iOS 开发课程,我很难理解某段代码是如何工作的。

我在我关注的行周围加上了星号。我不明白如何cards[chosenIndex].content与 进行比较cards[potentialMatchIndex].content,这源于我不了解if let potentialMatchIndex = indexOfTheOneAndOnlyFaceUpCard生产线的工作方式。我相信我对选项以及这段代码的运行方式有一个大致的了解,但我真的不明白数据/值来自哪里indexOfTheOneAndOnlyFaceUpCard这是供参考的视频。他在 1:12:40 开始谈论这些代码行。感谢您提前提供任何帮助!

0 投票
2 回答
60 浏览

swiftui - 如何将 String?-type 对象分配给 String-type 变量?

我想将字典的值元素分配给 String 变量。

在swiftUI中,字典中的所有值元素都作为String返回?类型。

当一个字符串?type 分配给 String 变量,String 变量在 swiftUI 应用程序中显示为 Optional("theStringIamTryingToDisplay")。

如何摆脱应用显示中的“可选”?