我有一个用于保存数据的结构;
struct MyStruct {
var age: Int
var name: String
}
我制作了一个数组,并用数据填充;
var myArray = [MyStruct]()
myArray[0] = MyStruct(age: 26, name: "John")
myArray[1] = MyStruct(age: 35, name: "Smith")
如何在myArray
中找到包含名称“Smith”的元素索引?
编辑:这里有更多关于我需要使用Losiowaty的新代码找到位置的背景信息;
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let selection = tableView.cellForRow(at: indexPath)?.textLabel
let name = selection!.text!
let location = myArray.index(where: { $0.name == name})
//additional code to comply with the function and return, unneeded for this context
}
答案 0 :(得分:10)
您可以使用index(where:)
方法。一个简单的例子:
let index = myArray.index(where: { $0.name == "Smith" })
如果没有这样的元素,该方法将返回nil
。
通过编辑的更多上下文,最好(即最安全)的方式是这样的:
if let name = selection?.name {
if let location = myArray.index(where: { $0.name == name }) {
// you know that location is not nil here
}
}
来源 - https://developer.apple.com/reference/swift/array/1688966-index
答案 1 :(得分:0)
对于Swift 4:索引(其中:)已被弃用,因此现在使用firstIndex:
let index = firstIndex(where: { $0.name == "Smith" })
答案 2 :(得分:0)
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let MyStruct = myArray[indexPath.row]
cell.yourLable?.text = MyStruct.name
}