将可比较的值类型 Int 应用于 Swift 4 中的 UIImage 对象
Posted
技术标签:
【中文标题】将可比较的值类型 Int 应用于 Swift 4 中的 UIImage 对象【英文标题】:Apply a comparable value type Int to an UIImage object in Swift 4 【发布时间】:2019-01-16 18:24:52 【问题描述】:我正在制作一个简单的配对游戏,在配对游戏中,当动物的图片与代表动物名称的单词匹配时,用户将单击一个按钮。图片和文字都是我的应用程序中的 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,那么我应该能够比较这些值以查看它们是否匹配.这应该是可能的,我只是不知道怎么做。有什么建议吗?
【问题讨论】:
【参考方案1】:使用结构并添加自定义相等运算符
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)"
【讨论】:
谢谢。你教会了我一些新东西。我确实有两个问题,希望您能简单地回答一下。 1)使用MVC模式,这个结构应该放在“视图控制器”文件之外的“模型”文件中吗? 2)“lhs”和“rhs”代表什么? 1) 是的,这是一种很好的做法。 2) 取自documentation 中的示例代码。我认为这意味着 left 和 right h 和 side 再次感谢。感谢您的跟进。以上是关于将可比较的值类型 Int 应用于 Swift 4 中的 UIImage 对象的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3:二元运算符不能应用于 int 和“Int”类型的操作数?
在 swift assert(0) 中无法将 Int 类型的值转换为预期的参数类型 Bool
swift3.0 无法将类型“[UnsafeMutablePointer<Int8>]”的值转换为预期的参数类型“UnsafeMutablePointer<Int8>?”