首页 > 解决方案 > SwiftUI macOS fetch json error [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* flags\

问题描述

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

[logging] volume does not support data protection, stripping SQLITE_OPEN_FILEPROTECTION_* flags\

我想知道为什么我只在 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()
    }
}

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

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

标签: jsonmacosswiftuixcode12fetchrequest

解决方案


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

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

let urlSession = URLSession(configuration: .ephemeral)

urlSession.dataTask { ... }

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


推荐阅读