Я пытался добавить 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)")
}
}