小编Geo*_*e_E的帖子

SSL_ERROR_SSL(1):库中的操作失败

我得到一些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)

spotify ios swift alamofire boringssl

45
推荐指数
1
解决办法
3万
查看次数

在同步非隔离上下文中调用主参与者隔离实例方法 XXX

我正在尝试向 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)

async-await swift swift-concurrency

31
推荐指数
1
解决办法
3万
查看次数

SwiftUI 中的 .primary 和 .secondary 颜色是什么?

在新的 SwiftUI 中,类型ColorUIColorfrom非常相似UIKit

正如预期的那样,有常见的颜色,但我注意到还有另外两种颜色:

  • .primary
  • .secondary

Apple 文档中没有关于不同Colors的描述。

  • 这些颜色是什么?
  • 对于某些事情,我应该使用哪一种?

swift swiftui

30
推荐指数
5
解决办法
2万
查看次数

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

如何使用新的 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

concurrency swift swift5 swift-concurrency

28
推荐指数
2
解决办法
2万
查看次数

如何访问与参与者隔离的属性

我试图检查演员的行为。这是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

swift swift5 xcode13 swift-concurrency

24
推荐指数
1
解决办法
3万
查看次数

转换不可发送的函数值可能会引入数据竞争

我有一段简单的代码:

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”可能会引入数据争用

这是为什么?我该如何解决它?

swift swift5 swiftui swift-concurrency

18
推荐指数
1
解决办法
4195
查看次数

SKView 警告日志

运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息:

2019-11-18 21:58:57.631912+0000 PixelBattles[2812:1215803]

SKView:ignoreRenderSyncInLayoutSubviews 为否。在没有处理程序的情况下调用 _renderSynchronouslyForTime

收到此日志我做错了什么,我应该担心吗?这可能是一个错误吗?

难道 SwiftUI 无法弄清楚如何为 进行布局SKView

主要编辑:

如果需要代码,可以在之前的编辑中看到。下面我说明为什么我认为它不再相关。

我已向 Apple 发送了一些反馈 ( FB7456217)。我已经删除了代码,因为我不再怀疑这是我的代码的问题。我创建了一个空白的游戏项目,没有 SwiftUI,但仍然立即得到相同的警告日志。

所以即使使用默认的项目模板,设备和模拟器的日志仍然出现。如果我得到有用的回应,我会更新这个问题。


我仍然没有收到任何回音 - 自从我半个月前发布此消息以来,有没有人得到任何新信息?我仍然有这些警告!

sprite-kit swift swiftui uiviewrepresentable

15
推荐指数
1
解决办法
2734
查看次数

nw_read_request_report 接收失败,错误为“软件导致连接中止”

我不知道其他人是否收到这些消息,但是当应用程序进入后台时,我在日志中收到了这些消息,然后又回来了:

[] nw_read_request_report [C3] 接收失败,错误“软件导致连接中止”

其次是:

无法向服务 com.apple.WebKit.WebContent 发出信号:113:找不到指定的服务

这是在许多其他错误日志之后出现的,例如:

我的项目有Firebase,它可能是所有与网络相关的日志的来源。

是什么原因造成的?这是一个错误吗?


更新

我取出子弹从1号的错误,写在我的答案在这里

xcode firebase

12
推荐指数
1
解决办法
7372
查看次数

如何删除 swiftui InsetGroupedListStyle 中 iOS 15 额外的顶部填充?

我在 SwiftUI 中有一个 InsetGroupedListStyle 列表,并注意到 iOS 15 中添加了额外的顶部填充。我如何控制或删除它?

List {
    Section(header: Text("Header")) {
        // some content
    }
}
.listStyle(InsetGroupedListStyle())
Run Code Online (Sandbox Code Playgroud)

这是 iOS 14:

在此输入图像描述

和 iOS 15:

在此输入图像描述

ios swift swiftui swiftui-list

10
推荐指数
2
解决办法
7006
查看次数

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

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

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

Timer.scheduledTimer(withTimeInterval: 5, repeats: false) { self.function() }
Run Code Online (Sandbox Code Playgroud)

但我想用Swift 5.5async/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 …

async-await swift swift5 swiftui swift-concurrency

9
推荐指数
2
解决办法
6913
查看次数