gpt4 book ai didi

ios - Swift iOS 意图扩展 : The data couldn't be read because it isn't in the correct format

转载 作者:行者123 更新时间:2023-11-28 05:45:23 25 4
gpt4 key购买 nike

我一直在尝试将 iOS Siri Intent Extension 添加到我的应用程序中。主应用程序和扩展之间有一个共享类,在该类中它创建一个对象数组,然后使用 UserDefaults 根据需要保存/加载它们。这在主应用程序中工作正常,但是当扩展运行时它会抛出以下错误:

“无法读取数据,因为它的格式不正确。”

我在两者之间启用了应用组,并根据需要共享所有文件。我在这里和其他地方读到的所有内容都说它应该像这样简单,但我无法弄清楚为什么当它使用相同的类在两个地方加载/保存时数据格式错误。使用断点,我可以看到两个应用程序之间的数据对象大小相同,但如果我查看内容,它确实看起来不同。我还尝试使用 containerURL(forSecurityApplicationGroupIdentifier: "group.xxxx") 将数据存储到磁盘,但遇到了同样的问题。

感谢任何帮助!

var arrayOfObjects = [MyObject]()

func save() {
do {
guard let defaults: UserDefaults = UserDefaults(suiteName: "group.xxxx") else {
fatalError("Error loading user defaults")
}

let data = try NSKeyedArchiver.archivedData(withRootObject: arrayOfObjects, requiringSecureCoding: false)

defaults.set(data, forKey: "objects")
defaults.synchronize()
} catch {
print("Error: \(error.localizedDescription)")
}
}

func load() {
do {
guard let defaults: UserDefaults = UserDefaults(suiteName: "group.xxxx") else {
fatalError("Error loading user defaults")
}

if let data = defaults.data(forKey: "objects") {

guard let objectData = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [MyObject] else {
fatalError("Error reading data from archive")
}
arrayOfObjects = objectData
}

} catch {
print("Error: \(error.localizedDescription)")
}
}

最佳答案

我认为你不能 unarchiveTopLevelObjectWithData 是因为它们在不同的应用程序中。

您应该使用 JSON 格式字符串在您的应用和扩展程序之间共享数据。

关于ios - Swift iOS 意图扩展 : The data couldn't be read because it isn't in the correct format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com