需要在核心数据中保存打乱的顺序

问题描述 投票:0回答:1

我正在尝试打乱核心数据中数组的顺序。现在,代码会随机排列它尝试保存随机排列顺序的顺序,但是当我重新加载类时,原始顺序仍然存在。

我正在尝试做的是下面的代码。 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)")
    }
}`
arrays swift for-loop core-data shuffle
1个回答
0
投票

尚不清楚底层持久层是如何实现的,也不清楚

Song
类的设计。获取数据时应该推断排序顺序,几乎可以肯定通过指定
SortDescriptor

但是,当您将每首歌曲的索引存储在其自己的数据类型中时,您可以在检索数据时使用它:

songs = DataManager.shared.songs(singer: singer).sorted{$0.order < $1.order}

如果你可以根据

Song
属性使
Comparable
符合
order
,你就可以使用
.sorted()

© www.soinside.com 2019 - 2024. All rights reserved.