问题标签 [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 回答
42 浏览

swift - Swift忽略块签名中定义的参数类型

我有下面的代码,编译器对此很满意:

但是一旦我item在块签名中定义了类型,我就会在返回行上得到一个错误:

它说Value of type 'Any?' has no member 'ColorCode'。我该如何解决这个问题?为什么它仍然使用块提供的默认 Any 类型?

0 投票
3 回答
71 浏览

swift - 任何?不正确的语义

我在 swift 中玩了一些代码,遇到了一个有趣的案例。让我们从一个小序言开始:假设您创建了一些可选变量:

然后你强制解开这样的类型au并且bu不是可选的。

看起来很合理,但是当您尝试将相同的代码应用于Optional<Any>

但是现在如果你尝试做同样的连接au + String(bu),swift 会产生编译错误,即使这两个变量已知是某种具体的类型,正如 swift 本身所报告的那样。错误是:

这当然看起来像一个错误,不是吗。请分享您的意见。

0 投票
1 回答
86 浏览

swift - xcode:我的健康栏颜色的快速选项

我在 Xcode 中快速为我的游戏创建了一个健康栏。我将健康栏添加到我的warrior1. 但我想将我的健康栏的颜色更改为黄色,如果healthBar.progress达到 avalue <= 0.5 && progressBar.progress >= 0.2和红色,如果healthBar.progress < 0.2 这是我到目前为止的代码:

那是我的ProgressBar课:

有谁知道我必须在 if 和 else 括号中写什么代码?我将不胜感激。

0 投票
2 回答
306 浏览

swift - 问题:我的非可选变量为零。(展开时出现致命错误)

我正在尝试更新 UILabel。

它最初被声明为非可选变量:

UILabel 依赖于非可选变量 balanceValue。

这一切都很好,但在某些时候我得到了这个致命的错误,它不会消失:

线程 1:致命错误:在隐式展开可选值时意外发现 nil

错误是指这一行:

balanceLabel.text = 字符串(平衡值)

这没有任何意义......我有一个非可选变量,默认声明为 1。怎么可能是零。

这是崩溃日志:

让我感到奇怪的是,我没有更改工作代码,但现在突然间我遇到了这个问题。重新启动 XCode 不会解决它。尝试了不同的方法来确定问题,但我找不到 balanceValue 应该为零的原因。非常感谢任何帮助。

0 投票
1 回答
3860 浏览

ios - 可选类型“URL?”的默认值

我有一个扩展程序允许我UITableView从 API 下载图像到我的。

imageUrl如果是,则应用程序崩溃nil

如果没有图像,我该如何包装它,??所以它只是空白?UIImageView

这是一个数据模型和获取数据功能

0 投票
2 回答
66 浏览

swift - 我希望系统报告不符合协议,但事实并非如此!为什么?

我正在使用 Xcode 版本 11.3.1 (11C504)

我正在尝试在 Swift 中创建一个通用函数,它将拒绝其参数,除非这样的参数是可选的。

在下面的代码中,我希望系统在对made inside的所有调用中报告错误,因为它们都没有提供可选值作为参数。onlyCallableByAnOptable()test()

Optional但是,如果我删除符合Optable!的扩展名,系统只会报告非协议符合性。

对我来说,这意味着系统将任何和所有值视为Optional,无论如何!

难道我做错了什么?

(顺便说一句,在早期版本的 Swift 中,以下代码曾经按预期工作。我最近才发现它停止工作,因为它让非Optional通过。)

0 投票
3 回答
116 浏览

swift - How to create a generic function in Swift that will reject the given parameter unless it is an Optional?

This question is a follow up to my earlier question: I expected the system to report non protocol conformance, but it does not! Why?

Please read the referred question for you to get a better idea of the constraints at hand.

I created a generic function in Swift that will reject its parameter unless such a parameter is Optional. The function I created fully works and does what I desire.

Meaning, any calls to onlyCallableByAnOptable(...), even inside an if let, will yield error due to non-protocol conformance, exactly as desired.

Errors like: Argument type 'UIColor' does not conform to expected type 'Optable'

My only question is: Is there a simpler solution?

To make it clear: func onlyCallableWithAnOptinalParameter<T>(:T)->T needs to work when called in an if let statement like func test() does.

0 投票
1 回答
101 浏览

android - Kotlin Multiplatform 保留选项 iOS 框架

我目前正在使用 Kotlin Multiplatform 构建一个 API 库,我想在 Android 和 iOS 项目之间共享它。

在某些情况下,API 响应包含可选项(这是 Kotlin 和 Swift 的一个很棒的特性)。例如:

在为 Android (JVM) 构建库时,可以使用选项,在 iOS 项目中使用 iOS 框架时,它们就消失了,因为框架被导出为 Objective-C 框架。

有谁知道如何创建一个 Swift 框架(这甚至可能),或者通过某种解决方法保留选项?谢谢!

0 投票
1 回答
28 浏览

swift - 如何创建一个在 Swift 中分配函数的可选变量

我想创建一个可以分配函数(或可以为零)的可选变量。我猜它看起来像这样,但以下代码无法编译。

谢谢你的帮助

0 投票
1 回答
36 浏览

swift - 类方法中的 Swift 选项

我对 swift 还比较陌生,所以我在使用正确的语法时遇到了一些问题。这是我的Date类的代码,它具有isLeapYeardaysInMonth方法。我在使用这些方法的选项时遇到问题:

我想要做的func isLeapYear(y : Int? = self.year) -> Bool是,当我调用 isLeapYear 并且未指定 y 时,它会自动设置为self.year。但是我收到以下错误:

使用未解析的标识符“self”

我也收到错误

可选类型“Int?”的值 必须解包为“Int”类型的值

我知道我必须使用,但我不确切知道如何以及在哪里尝试过if y! % 4 == 0,但这似乎使情况变得更糟。

我也想对方法daysInMonth做同样的事情