繁体   English   中英

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

[英]Get index from a model array in Swift

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

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”。 如果是这样,则返回找到number3的索引。 有什么建议么?

简单,

方法1:

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

方法二:

如果您不想只比较标题字符串,而是想根据标题比较两个MoreMenuItem ,请使MoreMenuItem确认为Equatable协议,如下所示

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 }
}

然后使用index(of:

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

希望它有帮助:)

尝试使用index(where:)方法的这种衬板。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM