gpt4 book ai didi

swift - 过滤字典数组并更改其属性

转载 作者:行者123 更新时间:2023-11-28 14:01:58 25 4
gpt4 key购买 nike

我有一个字典数组 var songsByLetters = [(key: String, value: [Song])]() 用户选择了一首歌曲,他会把它放在他的收藏夹中。所以我需要将所选歌曲 id isFaved bool 值更改为 true

之前我有一个没有歌曲首字母的歌曲对象数组作为新字典的键。当用户点击收藏按钮时,我曾经这样做过。

@IBAction func favButtonTapped(_ sender: UIButton) {
dbSongs.filter({$0.id == selectedSongId}).first?.isFaved = sender.isSelected
}

现在我有一本字典,所以我正在尝试这样做,但这不仅仅是正确的方法,而且我当然有错误。

Cannot convert value of type '()?' to closure result type 'Bool'

songsByLetters.filter{$0.value.filter{$0.id == selectedSongId}.first?.isFaved = sender.isSelected}

我明白这个错误,但我不知道如何过滤这本字典并更改那首歌曲 idisFaved 属性

这是歌曲结构:

[
"H":[
{
"id": 2134,
"name": "Happy Brithday",
"artist": "Paul Anka",
"isFaved": false,
"code": "380dj0a"
},
{
"id": 38304,
"name": "How can i stop loving you",
"artist": "Savage Garden",
"isFaved": false,
"code": "kkdj0a"
}
]
]

最佳答案

与其只保留 id,不如保留整个 Song

var selectedSong : Song?

...

self.selectedSong = songsByLetters[indexPath.section].value[indexPath.row]

最有效的解决方案是将 Song 声明为具有引用语义的类,然后您根本不需要过滤

@IBAction func favButtonTapped(_ sender: UIButton) {
selectedSong?.isFaved = sender.isSelected
}

注意:不鼓励您使用元组(您的字典实际上是一个元组)作为数据源。

关于swift - 过滤字典数组并更改其属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53476832/

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