swift 中的数组 .contains() 期待抛出的布尔值?
array .contains() in swift expecting a thrown bool?
我正在尝试检查数组 newGames 是否包含 class 游戏的某个对象。如果是这样,那么我不会将它添加到数组中。如果没有,我会添加它。我的代码如下:
for game in allGames{
if(!newGames.contains(game){
newGames.append(game)
}
}
其中 allGames
是对象 Game
的数组
var allGames = [Game(id: "5", title: "Dog", release_date: "1989", publisher: "Nintendo", price: "20", platform: "OS X", category: "Adventure", players: ["A", "B"]), Game(id: "5", title: "Dog", release_date: "1989", publisher: "Nintendo", price: "20", platform: "OS X", category: "Adventure", players: ["A", "B"])]
但是,我遇到了错误 Cannot convert value of type 'Game' to expected argument type '(Game) throws -> Bool'
为什么会这样?我都试过了
for game in allGames{
if(!newGames.contains(where: game){
newGames.append(game)
}
}
和
for game in allGames{
if(!newGames.contains(game throws -> Bool){
newGames.append(game)
}
}
但似乎都无法解决错误,反而只会增加错误。这是怎么回事,为什么 swift 对 .contains(game) 方法不满意?
您的 game
实例的类型可能不符合 equatable。
为该类型添加一个符合 equatable 的规则。
你必须创建一个 Equatable class 来比较对象
struct Game: Equatable {
let data:Bool
}
static func == (fObj:Game, tObj:Game) -> Bool {
return fObj.data == fObj:data
}
allGames.contains(yourObject)
或按 id
过滤
allGames.filter { data in data.id == 1 }
让您的游戏符合 Equatable.
您的代码段中似乎有 missing/extra 括号
应该是:
for game in allGames {
if !newGames.contains(game) {
newGames.append(game)
}
}
我正在尝试检查数组 newGames 是否包含 class 游戏的某个对象。如果是这样,那么我不会将它添加到数组中。如果没有,我会添加它。我的代码如下:
for game in allGames{
if(!newGames.contains(game){
newGames.append(game)
}
}
其中 allGames
是对象 Game
var allGames = [Game(id: "5", title: "Dog", release_date: "1989", publisher: "Nintendo", price: "20", platform: "OS X", category: "Adventure", players: ["A", "B"]), Game(id: "5", title: "Dog", release_date: "1989", publisher: "Nintendo", price: "20", platform: "OS X", category: "Adventure", players: ["A", "B"])]
但是,我遇到了错误 Cannot convert value of type 'Game' to expected argument type '(Game) throws -> Bool'
为什么会这样?我都试过了
for game in allGames{
if(!newGames.contains(where: game){
newGames.append(game)
}
}
和
for game in allGames{
if(!newGames.contains(game throws -> Bool){
newGames.append(game)
}
}
但似乎都无法解决错误,反而只会增加错误。这是怎么回事,为什么 swift 对 .contains(game) 方法不满意?
您的 game
实例的类型可能不符合 equatable。
为该类型添加一个符合 equatable 的规则。
你必须创建一个 Equatable class 来比较对象
struct Game: Equatable {
let data:Bool
}
static func == (fObj:Game, tObj:Game) -> Bool {
return fObj.data == fObj:data
}
allGames.contains(yourObject)
或按 id
过滤allGames.filter { data in data.id == 1 }
让您的游戏符合 Equatable.
您的代码段中似乎有 missing/extra 括号
应该是:
for game in allGames {
if !newGames.contains(game) {
newGames.append(game)
}
}