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

swift - 从 SwiftUI 的异步块内部改变 @State 变量是否安全?

我有以下View在内部使用 async/await 的结构 ()。

我使内部视图(IP类型)相应地交换的唯一方法是从异步块内部分配image必须用属性包装器标记的属性。@State从线程/线程安全的角度来看,这是一种安全的做法,还是我必须以其他方式实现它?

0 投票
2 回答
89 浏览

swift - 如何在 Swift 中解决“无法推断通用参数'T'”

我有以下结构和功能。

我想这样调用postAsyncfunc 但它说**Generic parameter 'TResponse' could not be inferred**我如何调用这个方法?我尝试了不同的方法但没有解决。

0 投票
1 回答
1134 浏览

swift - 快速异步/等待 for 循环

我对 WWDC 2021 中宣布的 Swift 5.5 中的新 async/await 模式摸不着头脑,这似乎涉及很多学习内容,而且不像假装的那样容易掌握。我刚刚在 WWDC 视频中看到了这个 for 循环:

据我了解,for 循环的每次迭代都会暂停for 循环,直到 fetchThumbnail() 完成运行(可能在不同的线程上)。我的问题:

  1. for 循环行中await id的目标是什么?如果我们在没有等待的情况下将 for 循环写成下面的样子怎么办?

  2. 上面的for 循环是否始终确保图像按顺序添加到拼贴画中,而不是根据早期获取的缩略图以随机顺序添加?因为在编写代码的经典完成处理程序方式中,确保数组中的顺序需要更多的代码逻辑。

0 投票
2 回答
67 浏览

ios - 重新加载tableview而不滚动

我是新来的 swift 我想重新加载我的表格视图,所以我使用了 tableviewName.reloadData() 在此之后表格视图被重新加载并向上滚动了一点,但我想留在原处

这是代码

func searchResult(row: Int, searchText: String, tag: Int) {

(defaultAnswerQuestionsArray[tag] as!DefaultAnswerObjectClass).defaultAnswerId = row

0 投票
2 回答
553 浏览

ios - Swift 5.5:Async/Await URLSession.shared.data() 抛出错误

我尝试使用 Swift 5.5 中的新 Async/Await 功能并尝试了以下代码

每次执行此操作时,该try await URLSession.shared.data(from: url!)部分都会引发错误。如果我抓住它并打印error.localizedString,我总是会被“取消”。这发生在所有不同类型的 URL 上。我试图坚持我在网上找到的教程,但我在这里缺少什么?

编辑:我强制应用程序进入运行时异常以获取更多错误详细信息:

正如这篇文章解释了 iOS 中的 NSURLErrorDomain 错误代码 -999 ,当服务器的 SSL 证书有问题时会发生此错误,我认为不是这种情况,因为我正在访问 iTunes 服务器或请求被任何取消其他在我的应用程序中,对我来说似乎就是这种情况。

0 投票
2 回答
201 浏览

ios - Utableviewcell边框

我有一套 uitableviewcell 。我想为以下条件应用边框颜色为 firstcell 应用顶部边框颜色,为 lastcell 应用底部边框颜色。

我是 swift 新手,所以我不确定这是否可能。

0 投票
1 回答
793 浏览

swift - Swift async/await equivalent of Promise Kit "when" pattern

I'm new to Swift, coming from JS, and I've started to build an iOS app.

Initially I went down the road, using Promise Kit for the async stuff, as it seemed easier to me than other things I read about.

Regardless, in JS, I use the following pattern a lot:

And I ultimately got this working with Promise Kit with something like this:

Promise Kit's when is similar to JavaScript's Promise.all() in that once the promises are fulfilled, things are triggered to move along in the code.

As my learning curve is slow enough, I've decided to start coding for iOS 15 and use Swift async/await.

QUESTION: What Swift async/await pattern that will do the above, similar to Promise Kit's wait and JavaScript's Promise.all()?

Thanks.

UPDATE: Thanks to @workingdog, who helped me arrive at the solution below. I now gotta work on error handling, but that's a different topic for now.

0 投票
1 回答
80 浏览

swiftui - SwiftUI 3.0 XCode13 B3 执行LocationButton会导致Error Domain=kCLErrorDomain Code=1 "(null)

当我在 XCode13 的 B3 模拟器上运行 LocationButton 时,我得到 Error Domain=kCLErrorDomain Code=1 "(null) When the button is pressing Detecting errors with delegate func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) 列表如下,我觉得是Plist的原因,不知道Plist和iOS14有什么关系,Plist没用。

`

`

0 投票
1 回答
278 浏览

swift - Swift 5.5,何时在自定义异步实现中使用“Task.suspend”?

新的 Async/Await 语法看起来很棒!但我想知道如何实现我自己的异步实现。

我偶然发现了这个 API:

这个 API 允许我在选择时手动挂起任务。问题是,我不确定我应该怎么做,以便从并发中受益而不是避免不良做法。

换句话说,我不知道的最佳实践Task.suspend()

例如:

一些具体问题:

  • 应该多久打电话一次suspend
  • 应该suspend在密集手术之前还是之后调用?(例如:IO、Crypto 等...)
  • 应该有最大数量的调用suspend吗?
  • suspend密集呼叫的“价格”是多少?
  • 什么时候不应该打电话suspend
  • 有没有其他方法来实现这种并发(异步/等待风格,而不是 GCD)

现实生活中的例子,我正在实现一个加密大文件内容的函数,因为它是一个 IO+Crypto 密集型任务,它应该是异步的,我想知道如何使用Task.suspend(或任何其他异步/等待工具)来实现它异步。

0 投票
0 回答
163 浏览

swift - 在 SwiftUI 视图中使用 Swift 5.5 异步变量

在 SwiftUI 中,我想展示一个List但是我希望我的每个屏幕/页面对象拥有它自己的标题和图像,以便在NavigationLink.

所以我有一个我的每个屏幕都可以使用的协议:

我创建了一些屏幕:

如您所见,我正在使用一个async函数来查找文件中的文本以返回正确的标题。

我遇到的问题是asyncSwiftUI. 我还很陌生,SwiftUI但这是我到目前为止所拥有的:

这给出了一个错误screen.title

不支持并发的函数中的“异步”属性访问

我有点没想到它会按原样工作,但是有可能以async var这种方式使用它吗?