swift 创建一个函数来检查数组中是否存在数据

i1icjdpr  于 2023-01-29  发布在  Swift
关注(0)|答案(2)|浏览(139)

我正在编写一个收藏夹类,将添加,删除,保存和加载曲目从宋模型。我需要另一个函数,将检查曲目是否添加到我们的数组或没有,但我不能使它工作。我有一个工作的例子,但它只检查一个参数。

func containsTracks(_ track: Soung) -> Bool {
        tracks.contains(track.name ?? "aboba")
}

我一直试图为宋创建同样的东西,但失败了:

func containsTrack(_ song: Soung) -> Bool {
        
        tracks?.contains(where: <#T##(Soung) throws -> Bool#>) // DON'T KNOW WHAT IS THIS
        
 }

所以我在这里寻求你的帮助。这个函数必须返回true或false才能创建这样的If语句
一个二个一个一个

np8igboo

np8igboo1#

在这个密码里...

tracks?.contains(where: <#T##(Soung) throws -> Bool#>)

看起来像<#T##(Soung) throws -> Bool#>的位是一个Xcode占位符。它看起来像是你编辑过的,而不是仅仅点击[Enter]把值放在那里。
这是一个闭包(函数)的占位符,它接受一个Soung并返回一个Bool
所以在你的代码里应该是...

func containsTrack(_ song: Soung) -> Bool {
    tracks.contains { $0.name == song.name }
}

或者更好的是Soung符合Equatable ...

func containsTrack(_ song: Soung) -> Bool {
    tracks.contains { $0 == song }
}

或者只是...

func containsTrack(_ song: Soung) -> Bool {
    tracks.contains(song)
}

你甚至根本不需要这个函数。

3vpjnl9f

3vpjnl9f2#

contains(where:将闭包作为参数,当找到匹配时返回true,例如

func containsTrack(_ song: Soung) -> Bool {
    tracks.contains(where:  { track in
        song.name == track.name
    })
}

相关问题