首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从结构中删除项目(Swift)

从结构中删除项目(Swift)
EN

Stack Overflow用户
提问于 2017-07-03 20:26:16
回答 2查看 2.2K关注 0票数 1

我有一个结构体

代码语言:javascript
运行
复制
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,可将对象添加到结构中

代码语言:javascript
运行
复制
favoriteSongs.append(FavoriteSong(title: songs[thisSong].title, artist: songs[thisSong].artist))

但是,我想要另一个从结构中删除对象的UIButton。如下所示:

代码语言:javascript
运行
复制
favoriteSongs.remove(FavoriteSong(title: songs[thisSong].title, artist: songs[thisSong].artist))

我正在使用UITableView来显示信息。我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-03 20:40:23

找到object的index并将其移除,该your与您的歌曲titleartist匹配

代码语言:javascript
运行
复制
let index = favoriteSongs.index{ $0.title == songs[thisSong].title && $0.artist == songs[thisSong].artist}
if let index = index {
    favoriteSongs.remove(at: index)
}
票数 3
EN

Stack Overflow用户

发布于 2017-07-03 20:44:06

代码语言:javascript
运行
复制
struct FavoriteSong : Equatable{

public static func ==(lhs: FavoriteSong, rhs: FavoriteSong) -> Bool {
    return lhs.title == rhs.title &&
            lhs.artist == rhs.artist
  }
}

要使用Equatable删除对象,必须向Array添加扩展

代码语言:javascript
运行
复制
extension Array where Element: Equatable {

// Remove first collection element that is equal to the given `object`:
mutating func remove(object: Element) {
    if let index = index(of: object) {
        remove(at: index)
    }
  }
}

然后你可以用一些像这样的东西

代码语言:javascript
运行
复制
favoriteSongs.remove(FavoriteSong(title: songs[thisSong].title, artist: songs[thisSong].artist))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44885581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档