【发布时间】:2016-11-15 16:42:32
【问题描述】:
我有下面的结构
struct Contact: Equatable {
let name: String?
let number: String
let image: UIImage?
}
func ==(lhs: Contact, rhs: Contact) -> Bool {
return lhs.name == rhs.name && lhs.number == rhs.number && lhs.image == rhs.image
}
我使用上面的函数来比较两个结构。但它无法比较图像。即使结构具有相同的图像,它也会失败。我在这里想念什么?
编辑:
根据邓肯的评论,我修改为功能
func ==(lhs: Contact, rhs: Contact) -> Bool {
var imagesAreEqual = false
if let lhsImage = lhs.image, let rhsImage = rhs.image {
imagesAreEqual = lhsImage.isEqual(rhsImage)
} else if lhs.image == nil && rhs.image == nil {
imagesAreEqual = true
}
return lhs.name == rhs.name && lhs.number == rhs.number && imagesAreEqual
}
静止条件失败。
【问题讨论】:
-
它们是否都引用了同一个 UIImage 对象?还是两个看起来完全一样的不同实例?