问题标签 [swift5.5]

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 回答
1116 浏览

swift - 如何使用异步等待 Swift 5.5 等待 x 秒

如何使用新的 Swift 5.5await关键字等待一段时间?

通常,使用完成处理程序,您会通过使用DispatchQueue's得到类似的东西asyncAfter(deadline:execute:)

如何将其转换为在 Swift 5.5中使用async& ?await

0 投票
1 回答
770 浏览

swift - Swift 5.5 中使用 async/await 的循环函数

我想在完成后 5 秒继续触发一个函数。

以前我会在函数末尾使用它:

但我想使用Swift 5.5's async/await

如果我使用这样的东西:

我收到一个警告,Function call causes an infinite recursion它并不能真正取消。

这编译得很好:

虽然它每 5 秒触发一次,但当我的SwiftUI视图被关闭时它会继续运行。我开始使用:

因为它都在同一个上运行,当视图被删除时,它Taskdetached应该全部取消吗?

实现这一目标的现代方法是什么async/await

0 投票
1 回答
173 浏览

swift - 从 SwiftUI 视图中更新 @State 属性

我有一个AsyncContentView在视图出现时处理数据加载并处理加载视图和内容的切换(取自此处swiftbysundell):

为了完整起见,这是Parsable协议:

LoadingState和_Loader

这是我正在使用的一些虚拟数据:

现在我把它们放在一起,这样就可以了。它处理async显示加载视图 2 秒的函数,然后使用提供的数据生成内容视图:

现在我遇到的问题是,这个数据包含应该选择哪个段。在我的真实应用程序中,这是一个获取数据的 Web 请求,其中包括选择了哪个段。

那么我怎样才能让这个视图更新selectedInterface @state属性呢?

如果我只是添加该行

进入我的AsyncContentView我得到这个错误

类型 '()' 不能符合 'View'

在此处输入图像描述

0 投票
1 回答
230 浏览

swift - Swift 5.5 并发:创建具有自定义错误类型的任务

我需要在我创建的任务中使用我自己的自定义错误枚举:

但我在任务初始化程序的开头收到以下错误: Referencing initializer 'init(priority:operation:)' on 'Task' requires the types 'MyError' and 'Error' be equivalent.

如何限制Task仅抛出属于我的自定义错误类型的错误MyError

0 投票
2 回答
63 浏览

swift - 单击 UITextfield 时键盘未打开

我使用快速编程编码创建登录页面。我尝试了模拟器和设备,但单击 textfied 时键盘没有打开。当我用 stroyboard 在 vi​​ewController 中编写代码时,键盘已经打开。但是,不使用情节提要,键盘无法打开。

0 投票
1 回答
211 浏览

swift - 为什么改变演员的 nonSendable 属性是合法的?

以下代码在 Swift 5.5 (beta) 中是合法的:

为什么这是合法的?狗属性是共享状态,不是吗?我们不是有同时在不同线程上访问演员的狗的危险吗?这不就是演员应该保护我们的吗?

奇怪的是,如果演员的dog属性是用var而不是声明的let,我们将不得不await在访问期间说。为什么会有所不同?Dog 是一个引用类型;它在适当的位置是可变的,并且无论是否用letor声明它都以完全相同的方式可变var

0 投票
4 回答
910 浏览

swift - SwiftUI:在没有#available的不同iOS版本之间使用视图修饰符

我使用以下代码片段(在Xcode 13 Beta 5和部署目标设置为 14.0)根据 iOS 版本有条件地应用视图修饰符:

只要我不使用 iOS 15 的视图修饰符,此代码就可以很好地工作,但是如果我想使用这些修饰符中的任何一个(例如Taskfor ex.),那么我需要使用#available指令,这是我不想选择的选项,因为我的代码库很大,有很多部分应该采用新的 iOS 15 修饰符,并且通过#available在代码中的任何地方使用它会使它看起来像一盘千层面。

如何使这段代码以一种干净的方式编译而不使用#available检查?

0 投票
1 回答
385 浏览

swift - 如何从 `Button` 的动作或 `Binding` 引用 `actor` 的属性?

我有一个像这样的演员,他在后台不断地执行冗长而复杂的工作:

如何field从 SwiftUI 视图更新它?

我试过这个,但得到了这些错误:

如何actor从 SwiftUI 视图中访问和改变我的?

0 投票
1 回答
112 浏览

swift - 无法设置 AsyncStream `onTermination` 处理程序

有没有人成功创建 AsyncStream 并设置它的onTermination处理程序?我做不到。以下内容直接从提案中复制并粘贴(https://github.com/apple/swift-evolution/blob/main/proposals/0314-async-stream.md),除了我通过现代化摆脱了detach警告Task.detached

看起来不错,但它不能编译,而且我找不到让它编译的方法。设置器上的错误消息onTermination如下:

我不知道编译器要我做什么。有没有人解决这个问题,解决方案是什么?

(我已经为此提交了一个错误。)

0 投票
0 回答
51 浏览

swift - iOS 15 SwiftUI 键盘工具栏随机行为

我正在尝试为我TextField在 SwiftUI 中的一些添加键盘工具栏。

我有一个这样定义的视图:

The problem is, the additional toolbar button appears when the wrong field is selected.

在此处输入图像描述

我也尝试过使用@FocusedValue这样的:

但这给出了相同的结果。就好像在focused设置状态之前决定了工具栏。我不确定这是否是一个可能的错误,或者我做错了?

尽管即使我完成了上述工作,它也不能解决我只想要一个文本字段的工具栏的整体问题,但是当我尝试像这样设置它时,我根本没有工具栏。