【发布时间】:2017-12-06 17:21:11
【问题描述】:
我有一个结构
struct FavoriteSong {
var title: String
var artist: String
init(title : String, artist : String) {
self.title = title
self.artist = artist
}
init?(dictionary : [String:String]) {
guard let title = dictionary["title"],
let artist = dictionary["artist"] else { return nil }
self.init(title: title, artist: artist)
}
var propertyListRepresentation : [String:String] {
return ["title" : title, "artist" : artist]
}
}
var favoriteSongs: [FavoriteSong] = [
];
通过按下UIButton,一个对象被添加到结构中
favoriteSongs.append(FavoriteSong(title: songs[thisSong].title, artist: songs[thisSong].artist))
但是,我想要另一个 UIButton 从结构中删除对象。像这样的:
favoriteSongs.remove(FavoriteSong(title: songs[thisSong].title, artist: songs[thisSong].artist))
我正在使用UITableView 来显示信息。我该怎么做?
【问题讨论】:
-
删除哪个元素?您没有提到应用程序扩展时它将如何工作。您为单个结构解释它的示例,但您要删除哪个元素。你有这些的集合视图或表格视图吗??添加更多细节!
-
当您将喜爱的歌曲存储在
Array中时。因此,您要么必须记住[store] 存储歌曲的index,然后可以通过索引将其删除。另一种选择是通过title将其存储在Dictionary中,然后您可以通过title键删除fvrt歌曲。 -
你可以让
FavoriteSong符合协议Equatable,然后使用==操作符遍历数组以找到歌曲的潜在索引,如果找到,将其从数组中删除。 -
更多细节,这首歌?歌曲?