在 Swift 4 中将可比较的值类型 Int 应用于 UIImage 对象

Apply a comparable value type Int to an UIImage object in Swift 4

我正在制作一个简单的配对游戏,在配对游戏中,当动物图片与代表动物名称的单词相匹配时,用户将单击一个按钮。图片和文字在我的应用程序中都是 UIImages。我想出了如何比较数组中的两个图像对象以确定它们是否匹配并相应地应用分数 ...

if gameMode == 1 {

        if animalWord.image == animalPic.image {

            scoreInt += 1
            scoreLabel.text = String("Score: \(scoreInt)")

        } else {

            scoreInt -= 1
            scoreLabel.text = String("Score: \(scoreInt)")

        }

    }

但是,这不会完成我需要它做的事情,因为 UIImages 将不相同。因此,我需要为每个 UIImage 分配一个可以相同的值并比较这些值。换句话说,如果我可以将 1 的值分配给猪图片的 UIImage,并将 1 的值分配给单词 PIG 的 UIImage,那么我应该能够比较这些值以查看它们是否匹配.这应该是可能的,我只是不知道怎么做。有什么建议吗?

使用结构并添加自定义相等运算符

struct Item : Equatable {
    let image : UIImage
    let value : Int

    static func ==(lhs: Item, rhs: Item) -> Bool {
        return lhs.value == rhs.value
    }
}

然后创建 Item 的实例,分配图像和适当的值

let item1 = Item(image : UIImage(named: "PigAnimal")!, value: 1)
let item2 = Item(image : UIImage(named: "PigWord")!, value: 1)

并比较

if gameMode == 1 {

    if item1 == item2 {
        scoreInt += 1                
    } else {
        scoreInt -= 1             
    }
    scoreLabel.text = "Score: \(scoreInt)"
}