我得到一些SSL Errors(这导致我的项目停止/挂起而没有崩溃,因为我DispatchGroup等待请求),我不知道它们是如何引起的,它们是什么,或者该怎么做.
我看过无数的网页大概这个问题,但目前还没有太多的文件或具有相同问题的人.我试过更改info.plist,但似乎没有帮助.两者都是plist这样的:( accounts.spotify.com是访问令牌请求的URL的域)
当我向服务器发出请求时,我可以看到我的代码失败了.(这是我的框架).如前所述,我DispatchGroup等待这个请求但代码停止了.
self.currentToken = try self.spotifyRequest("https://accounts.spotify.com/api/token", method: .post, parameters: parameters)
Run Code Online (Sandbox Code Playgroud)
我的要求方法:
private func spotifyRequest(_ url: URLConvertible, method: HTTPMethod, parameters: Parameters? = nil, headers: HTTPHeaders? = nil) throws -> JSONStandard {
// Create a dispatch group to handle threads
let group = DispatchGroup()
group.enter()
// Status of the request (starts as nil)
var status: JSONStandard?
DispatchQueue.global(qos: .userInitiated).async {
Alamofire.request(url, method: method, parameters: parameters, headers: headers).responseJSON(completionHandler: …Run Code Online (Sandbox Code Playgroud) 我正在尝试向 UIButton 添加异步 do/catch/defer 操作。但是,如果我只是调用 defer 块中的方法,则会收到Call to main actor-isolated instance method XXX in a synchronous nonisolated context错误。我发现的解决方法是将其包装在另一个Task块中,如下所示。只是想检查这是否是正确的方法?如果有人能解释该错误消息的实际含义,那就太好了。
@objc private func post(_ sender: UIButton) {
Task {
// defer { dismiss(animated: true) } -- Doesn't work
defer { Task { await dismiss(animated: true) } }
do {
try await doSomethingAsync()
} catch {
print(error)
}
}
}
Run Code Online (Sandbox Code Playgroud) 在新的 SwiftUI 中,类型Color与UIColorfrom非常相似UIKit。
正如预期的那样,有常见的颜色,但我注意到还有另外两种颜色:
.primary.secondaryApple 文档中没有关于不同Colors的描述。
如何使用新的 Swift 5.5await关键字来等待一段时间?
DispatchQueue通常,对于完成处理程序,您可以通过使用's得到类似的结果asyncAfter(deadline:execute:):
func someLongTask(completion: @escaping (Int) -> Void) {
DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
completion(Int.random(in: 1 ... 6))
}
}
someLongTask { diceRoll in
print(diceRoll)
}
Run Code Online (Sandbox Code Playgroud)
在 Swift 5.5 中如何将其转换为使用async& ?await
我试图检查演员的行为。这是Swift5.5提供的新功能。
我使用官方文档swift.org中的示例代码创建了一个游乐场:
import Foundation
actor TemperatureLogger {
let label: String
var measurements: [Int]
private(set) var max: Int
init(label: String, measurement: Int) {
self.label = label
self.measurements = [measurement]
self.max = measurement
}
}
let logger = TemperatureLogger(label: "Outdoors", measurement: 25)
print(await logger.max)
// Prints "25"
Run Code Online (Sandbox Code Playgroud)
但我的编译器在这个例子中失败了:
斯威夫特编译器错误:
不支持并发的函数中的“await”
Actor 隔离属性“max”只能从 Actor 内部引用
那么如何访问与参与者隔离的属性呢?
也许这是编译器或示例代码中的错误?
Xcode 版本 13.0 测试版 (13A5154h) Swift 版本 5.5
我有一段简单的代码:
struct ContentView: View {
var body: some View {
Text("Hello world!")
.task {
await myAsyncFunc()
}
}
private func myAsyncFunc() async {}
}
Run Code Online (Sandbox Code Playgroud)
这编译完全没问题。但是,如果我用以下内容替换任务:
.task(myAsyncFunc)
Run Code Online (Sandbox Code Playgroud)
它不起作用,并给我以下错误:
将不可发送的函数值转换为“@Sendable () async -> Void”可能会引入数据争用
这是为什么?我该如何解决它?
运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息:
2019-11-18 21:58:57.631912+0000 PixelBattles[2812:1215803]
SKView:ignoreRenderSyncInLayoutSubviews 为否。在没有处理程序的情况下调用 _renderSynchronouslyForTime
收到此日志我做错了什么,我应该担心吗?这可能是一个错误吗?
难道 SwiftUI 无法弄清楚如何为 进行布局SKView?
如果需要代码,可以在之前的编辑中看到。下面我说明为什么我认为它不再相关。
我已向 Apple 发送了一些反馈 ( FB7456217)。我已经删除了代码,因为我不再怀疑这是我的代码的问题。我创建了一个空白的游戏项目,没有 SwiftUI,但仍然立即得到相同的警告日志。
所以即使使用默认的项目模板,设备和模拟器的日志仍然出现。如果我得到有用的回应,我会更新这个问题。
我仍然没有收到任何回音 - 自从我半个月前发布此消息以来,有没有人得到任何新信息?我仍然有这些警告!
我不知道其他人是否收到这些消息,但是当应用程序进入后台时,我在日志中收到了这些消息,然后又回来了:
[] nw_read_request_report [C3] 接收失败,错误“软件导致连接中止”
其次是:
无法向服务 com.apple.WebKit.WebContent 发出信号:113:找不到指定的服务
这是在许多其他错误日志之后出现的,例如:
我的项目有Firebase,它可能是所有与网络相关的日志的来源。
是什么原因造成的?这是一个错误吗?
我取出子弹从1号的错误,写在我的答案在这里。
我在 SwiftUI 中有一个 InsetGroupedListStyle 列表,并注意到 iOS 15 中添加了额外的顶部填充。我如何控制或删除它?
List {
Section(header: Text("Header")) {
// some content
}
}
.listStyle(InsetGroupedListStyle())
Run Code Online (Sandbox Code Playgroud)
这是 iOS 14:
和 iOS 15:
我想在函数完成后 5 秒继续触发它。
以前我会在函数末尾使用它:
Timer.scheduledTimer(withTimeInterval: 5, repeats: false) { self.function() }
Run Code Online (Sandbox Code Playgroud)
但我想用Swift 5.5的async/await.
如果我使用这样的东西:
func loadInfo() async {
async let info = someOtherAsyncFunc()
self.info = try? await info
await Task.sleep(5_000_000_000)
await loadInfo()
}
Run Code Online (Sandbox Code Playgroud)
我收到一条警告,说它Function call causes an infinite recursion并不是真正可以取消的。
这编译得很好:
func loadInfo() async {
Task {
async let info = someOtherAsyncFunc()
self.info = try? await info
await Task.sleep(5_000_000_000)
if Task.isCancelled {
print("Cancelled")
}
else
{
print("Not cancelled")
await loadInfo()
}
}
}
Run Code Online (Sandbox Code Playgroud)
尽管它每 5 …
swift ×9
swiftui ×5
swift5 ×4
async-await ×2
ios ×2
alamofire ×1
boringssl ×1
concurrency ×1
firebase ×1
spotify ×1
sprite-kit ×1
swiftui-list ×1
xcode ×1
xcode13 ×1