arrays - 如何查找数组是否包含对象

标签 arrays swift

我创建了一个名为 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/

相关文章:

ios - 使用NSLayoutConstraint时引起的编译错误

c++ - 乘以存储在一维数组算法中的上三角矩阵

ios - 无法从 for 循环调用方法

ios - 在后台线程 com.google.Maps.LabelingBehavior 上调用的 UI API

ios - 如何获得 [Error] : from NSError. 描述?

ios - 如何知道 UITableView 已完成 swift 中的数据加载

java - 数组的死代码?

php - 在 PHP 中设置数组的理论联合

java - 字符串数组中的随机位置? java

ios - PDFKit - 注释未出现在 PDF 上