I am trying to save an array of sounds that I concatenated together in swift, and later on load them. However, all of the data properly saves, but when I try to load it, all of the properties that the data had held no longer exist, but it still counts the data as existing just without any of the properties it had when saved. I am confused why this happens
struct saveSound{
static func save(newSound: mergedSound = mergedSound()){
if newSound.soundName == "" || newSound.soundUrl == "" { print("no new data") ; return}
var sounds = loadSounds.getSounds()
sounds.append(newSound)
let archive = NSKeyedArchiver.archivedData(withRootObject: sounds)
for soun in sounds{
print(soun.soundName," - saved")
}
UserDefaults.standard.set(archive, forKey: "SavedSounds")
}
}
struct loadSounds {
static func getSounds() -> [mergedSound]{
var sounds = [mergedSound]()
var data = Data()
if UserDefaults.standard.object(forKey: "SavedSounds") as? Data != nil {
print("data exists")
data = UserDefaults.standard.object(forKey: "SavedSounds") as! Data
sounds = NSKeyedUnarchiver.unarchiveObject(with: data) as! [mergedSound]
for souns in sounds{
print(souns.soundName,sounds.count, " - loaded")
}
}
return sounds
}
}