我创建了一个名为 MenuItem
的自定义类:
import Foundation
class MenuItem {
var title: String
var tag: Int
var image: UIImage
init (title: String, tag: Int, image: UIImage) {
self.title = title
self.tag = tag
self.image = image
}
}
我正在将这些对象添加到一个数组中。
如何检查数组是否包含特定菜单项?
这是我尝试过的简化版本。
let menuOptionInventory = MenuItem(title: "Inventory", tag: 100, image: UIImage(imageLiteral: "871-handtruck"))
var menuOptions = [MenuItem]()
menuOptions.append(menuOptionInventory)
if (menuOptions.contains(menuOptionInventory)) {
//does contain object
}
当我执行此操作时,我收到此错误消息:
Cannot convert value of type 'MenuItem' to expected argument type '@noescape (MenuItem) throws -> Bool'
最佳答案
试试这个:
if menuOptions.contains( { $0 === menuOptionInventory } ) {
//does contain object
}
编辑:正如 JAL 指出的那样,这确实比较指针。
因此,您可以覆盖 ==
运算符,专门用于比较两个 MenuItem
对象,如下所示:
func == (lhs: MenuItem, rhs: MenuItem) -> Bool {
return lhs.title == rhs.title && lhs.tag == rhs.tag && lhs.image == rhs.image
}
然后您可以使用 contain 方法闭包来执行对象之间的比较。
if menuOptions.contains( { $0 == menuOptionInventory } ) {
//does contain object
}
关于arrays - 如何查找数组是否包含对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895800/