SwiftUI macOS 获取 json 错误 [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* 标志\
Posted
技术标签:
【中文标题】SwiftUI macOS 获取 json 错误 [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* 标志\\【英文标题】:SwiftUI macOS fetch json error [logging] volume does not support data protection, stripping SQLITE_OPEN_FILEPROTECTION_* flags\SwiftUI macOS 获取 json 错误 [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* 标志\ 【发布时间】:2020-12-13 18:11:31 【问题描述】:我厌倦了为我的 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 elsereturn
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 服务器不是我的错。
【问题讨论】:
在从服务器获取 JSON 的 macOS 终端应用程序上看到相同的错误。 我在没有从服务器获取 JSON 的 macOS 应用程序上看到同样的错误。 这个问题你解决了吗? @AntonHarniakou 不幸的是没有。但是这个问题不会影响任何事情,所以我只是忽略它。也许这只是一个(快速)错误或类似的东西。 【参考方案1】:看起来这个错误是由使用全局单例凭据、缓存和 cookie 存储对象的 URLSession 的“默认”配置引起的。
将配置设置为“临时”配置可消除此错误,因为它不会将缓存、cookie 或凭据写入磁盘。这可以通过实例化一个URLSession
对象并使用它代替URLSession.default
来完成。例如,
let urlSession = URLSession(configuration: .ephemeral)
urlSession.dataTask ...
有关 NSURLSessionConfiguration 的更多信息,请参阅 Apple 的文档 (https://developer.apple.com/documentation/foundation/nsurlsessionconfiguration)
【讨论】:
这是否意味着我们不能再使用默认或共享配置了?我正在联系的 API 需要一个带有登录时获得的令牌的 cookie。这一定是 Big Sur 以来的错误或 Gatekeeper 问题吧?【参考方案2】:确保在 Xcode 中添加这两个功能。它允许 URLSession 进行呼叫,无论是进出还是 :)
【讨论】:
感谢您的提示,但我在项目开始时就添加了这两个功能。 嗯,这很奇怪。祝你好运,希望你能找到解决办法!以上是关于SwiftUI macOS 获取 json 错误 [logging] 卷不支持数据保护,剥离 SQLITE_OPEN_FILEPROTECTION_* 标志\的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI for macOS 应用程序中获取点击手势的鼠标/指针位置