我正在尝试打乱核心数据中数组的顺序。现在,代码会随机排列它尝试保存随机排列顺序的顺序,但是当我重新加载类时,原始顺序仍然存在。
我正在尝试做的是下面的代码。 YESR 正在调试部分打印。
var songs = [Song]()
var index = Int()
var singer: Singer?
override func viewDidLoad() {
super.viewDidLoad()
if let singer = singer {
songs = DataManager.shared.songs(singer: singer)
}
tableView.reloadData()
}
@objc func shuffleButtonPressed() {
print("shuffle")
// Shuffle the songs
songs.shuffle()
// Update the 'order' attribute for each song
for (index, song) in songs.enumerated() {
song.order = Int16(index)
}
do {
try DataManager.shared.save() // Assuming 'DataManager.shared' is your Core Data manager
tableView.reloadData()
print("yesr")
} catch {
// Handle error while saving
print("Error saving shuffled songs: \(error)")
}
}`
尚不清楚底层持久层是如何实现的,也不清楚
Song
类的设计。获取数据时应该推断排序顺序,几乎可以肯定通过指定 SortDescriptor
。
但是,当您将每首歌曲的索引存储在其自己的数据类型中时,您可以在检索数据时使用它:
songs = DataManager.shared.songs(singer: singer).sorted{$0.order < $1.order}
如果你可以根据
Song
属性使 Comparable
符合 order
,你就可以使用 .sorted()