SwiftUI macOS fetch json 错误 [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* 标志\

Hac*_*Mac 22 macos json swiftui fetchrequest xcode12

我厌倦了为我的 IOS 应用程序构建一个 macOS 应用程序(Xcode 12,SwifUI)。要从我的网站获取 json 数据,我需要一个获取请求(没有 API 密钥)。我在 medium、hackingwithswift 等上找到了几个样本,但我总是保持相同的错误。

[logging] volume does not support data protection, stripping SQLITE_OPEN_FILEPROTECTION_* flags\
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我只在 macOS 项目上出现这个错误,因为我的 IOS 版本工作正常。

class FetchDeviceInfo: ObservableObject {

    @Published var deviceInfo = [DeviceData]()

    init() {

        let url = "https://yourURL"

        let session = URLSession(configuration: .default)

        session.dataTask(with: URL(string: url)!) { (data, _, _) in

            guard let json = data else{return}

            do{

                let data = try JSONDecoder().decode([DeviceData].self, from: json)

                print(images)

                DispatchQueue.main.async {
                    self.deviceInfo = data
                }
            }
            catch{
                print(error.localizedDescription)
            }
        }
        .resume()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我,我会很高兴。

编辑:我找到了一种获取数据的方法,但我仍然收到错误消息。我也用“专业”的 Json API 对其进行了测试,但错误仍然发生,所以我希望使用非专业的 JSON 服务器不是我的错。

小智 6

看起来这个错误是由 URLSession 的“默认”配置引起的,该配置使用全局单例凭据、缓存和 cookie 存储对象。

将配置设置为“临时”配置会消除此错误,因为它不会将缓存、cookie 或凭据写入磁盘。这可以通过实例化一个URLSession对象并使用它代替URLSession.default. 例如,

let urlSession = URLSession(configuration: .ephemeral)

urlSession.dataTask { ... }
Run Code Online (Sandbox Code Playgroud)

有关 NSURLSessionConfiguration 的更多信息,请参阅 Apple 的文档(https://developer.apple.com/documentation/foundation/nsurlsessionconfiguration


Joh*_*sen 4

确保在 Xcode 中添加这两个功能。它允许 URLSession 进行调用,无论是传入还是传出:)

确保添加这两个功能。 它允许使用 URLSession 进行网络调用,无论是传入还是传出