将id内的数组字符串值与Swift 3中的索引匹配

时间:2017-05-29 11:14:16

标签: arrays swift

我有一个数组

public var options = [String]()
// VALUES = John-34 , Mike-56 , Marry-43 etc..

我有功能

 public func getIndex(id : Int){

        if let index = options.contains("-\(id)".lowercased()) {
            selectedIndex = index
            print("\(options[index])"). 
        }
    }

我希望用我的函数选择索引;

getIndex(id:34) //必须显示John-34

但不起作用?任何的想法? id是唯一的,只能显示1个索引。

1 个答案:

答案 0 :(得分:1)

您可以使用index(where:)

public func getIndex(id : Int){
    if let index = options.index(where: { $0.components(separatedBy: "-").last == "\(id)" }) {
        print(index, options[index])
    }
}

修改:而不是像这样对字符串进行硬编码,而是制作一个struct或自定义class来帮助您。

struct Person { 
    var id: Int
    var name: String
}

现在创建这个结构的数组,之后很容易过滤你的数组。

var options = [Person]()
public func getIndex(id : Int){
    if let index = options.index(where: { $0.id == id }) {
        print(index, options[index])
    }
}