Ios 从Swift中的模型数组获取索引

Ios 从Swift中的模型数组获取索引,ios,arrays,swift,Ios,Arrays,Swift,我有一个这样的自定义数组 let moreMenuItem = [MoreMenuItem(title: "number1", imageName: "rate"), MoreMenuItem(title: "number2", imageName: "followFacebook"), MoreMenuItem(title: "number3", imageName: "email")] 这是我的模型课 clas

我有一个这样的自定义数组

let moreMenuItem = [MoreMenuItem(title: "number1", imageName: "rate"),
                    MoreMenuItem(title: "number2", imageName: "followFacebook"),
                    MoreMenuItem(title: "number3", imageName: "email")]
这是我的模型课

class MoreMenuItem {

    var title: String?
    var imageName: String?

    init(title: String, imageName: String) {
        self.title = title
        self.imageName = imageName }
    }
}
现在假设我有一个字符串“number3”,我想检查我的数组标题中是否有“number3”。如果是,则返回找到编号3的索引。有什么建议吗?

简单

方法1:

if let indexOfItem = moreMenuItem.index(where: { (item) -> Bool in
        return item.title == "number3"
    }) {
        print("\(indexOfItem)")
    }
    else {
        print("item not found")
    }
方法2:

if let indexOfItem = moreMenuItem.index(where: { (item) -> Bool in
        return item.title == "number3"
    }) {
        print("\(indexOfItem)")
    }
    else {
        print("item not found")
    }
如果您不想简单地比较一个标题字符串,而是想根据标题比较两个
MoreMenuItem
,请按如下所示确认
MoreMenuItem
协议

class MoreMenuItem : Equatable {
    static func ==(lhs: MoreMenuItem, rhs: MoreMenuItem) -> Bool {
        return lhs.title == rhs.title
    }


    var title: String?
    var imageName: String?

    init(title: String, imageName: String) {
        self.title = title
        self.imageName = imageName }
}
然后使用索引(of:

let itemToCompare = MoreMenuItem(title: "number3", imageName: "email")
if let value = moreMenuItem.index(of: itemToCompare) {
        print("\(value)")
}

希望有用:)

使用
索引(其中:)
方法尝试这一行程序

if let index = moreMenuItem.index(where: { $0.title == "number3" }) {
    print(index)
}

很好用!谢谢美好的效果非常好,方法2非常有用。谢谢行动!不知怎的,我打错了。再次感谢!