问题标签 [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.
swift - 如何使用异步等待 Swift 5.5 等待 x 秒
如何使用新的 Swift 5.5await
关键字等待一段时间?
通常,使用完成处理程序,您会通过使用DispatchQueue
's得到类似的东西asyncAfter(deadline:execute:)
:
如何将其转换为在 Swift 5.5中使用async
& ?await
swift - Swift 5.5 中使用 async/await 的循环函数
我想在完成后 5 秒继续触发一个函数。
以前我会在函数末尾使用它:
但我想使用Swift 5.5
's async/await
。
如果我使用这样的东西:
我收到一个警告,Function call causes an infinite recursion
它并不能真正取消。
这编译得很好:
虽然它每 5 秒触发一次,但当我的SwiftUI
视图被关闭时它会继续运行。我开始使用:
因为它都在同一个上运行,当视图被删除时,它Task
不detached
应该全部取消吗?
实现这一目标的现代方法是什么async/await
?
swift - 从 SwiftUI 视图中更新 @State 属性
我有一个AsyncContentView
在视图出现时处理数据加载并处理加载视图和内容的切换(取自此处swiftbysundell):
为了完整起见,这是Parsable
协议:
LoadingState
和_Loader
这是我正在使用的一些虚拟数据:
现在我把它们放在一起,这样就可以了。它处理async
显示加载视图 2 秒的函数,然后使用提供的数据生成内容视图:
现在我遇到的问题是,这个数据包含应该选择哪个段。在我的真实应用程序中,这是一个获取数据的 Web 请求,其中包括选择了哪个段。
那么我怎样才能让这个视图更新selectedInterface
@state
属性呢?
如果我只是添加该行
进入我的AsyncContentView
我得到这个错误
类型 '()' 不能符合 'View'
swift - Swift 5.5 并发:创建具有自定义错误类型的任务
我需要在我创建的任务中使用我自己的自定义错误枚举:
但我在任务初始化程序的开头收到以下错误:
Referencing initializer 'init(priority:operation:)' on 'Task' requires the types 'MyError' and 'Error' be equivalent
.
如何限制Task
仅抛出属于我的自定义错误类型的错误MyError
?
swift - 单击 UITextfield 时键盘未打开
我使用快速编程编码创建登录页面。我尝试了模拟器和设备,但单击 textfied 时键盘没有打开。当我用 stroyboard 在 viewController 中编写代码时,键盘已经打开。但是,不使用情节提要,键盘无法打开。
swift - 为什么改变演员的 nonSendable 属性是合法的?
以下代码在 Swift 5.5 (beta) 中是合法的:
为什么这是合法的?狗属性是共享状态,不是吗?我们不是有同时在不同线程上访问演员的狗的危险吗?这不就是演员应该保护我们的吗?
奇怪的是,如果演员的dog
属性是用var
而不是声明的let
,我们将不得不await
在访问期间说。为什么会有所不同?Dog 是一个引用类型;它在适当的位置是可变的,并且无论是否用let
or声明它都以完全相同的方式可变var
。
swift - SwiftUI:在没有#available的不同iOS版本之间使用视图修饰符
我使用以下代码片段(在Xcode 13 Beta 5
和部署目标设置为 14.0)根据 iOS 版本有条件地应用视图修饰符:
只要我不使用 iOS 15 的视图修饰符,此代码就可以很好地工作,但是如果我想使用这些修饰符中的任何一个(例如Task
for ex.),那么我需要使用#available
指令,这是我不想选择的选项,因为我的代码库很大,有很多部分应该采用新的 iOS 15 修饰符,并且通过#available
在代码中的任何地方使用它会使它看起来像一盘千层面。
如何使这段代码以一种干净的方式编译而不使用#available
检查?
swift - 如何从 `Button` 的动作或 `Binding` 引用 `actor` 的属性?
我有一个像这样的演员,他在后台不断地执行冗长而复杂的工作:
如何field
从 SwiftUI 视图更新它?
我试过这个,但得到了这些错误:
如何actor
从 SwiftUI 视图中访问和改变我的?
swift - 无法设置 AsyncStream `onTermination` 处理程序
有没有人成功创建 AsyncStream 并设置它的onTermination
处理程序?我做不到。以下内容直接从提案中复制并粘贴(https://github.com/apple/swift-evolution/blob/main/proposals/0314-async-stream.md),除了我通过现代化摆脱了detach
警告Task.detached
:
看起来不错,但它不能编译,而且我找不到让它编译的方法。设置器上的错误消息onTermination
如下:
我不知道编译器要我做什么。有没有人解决这个问题,解决方案是什么?
(我已经为此提交了一个错误。)