我正在尝试item index通过搜索找到一个list。有人知道该怎么做吗?
我看到了list.StartIndex,list.EndIndex但是我想要类似python的东西list.index("text")。
由于Swift在某些方面比面向对象的功能更强大(并且Array是结构,而不是对象),因此请使用函数“ find”对数组进行操作,该数组将返回一个可选值,因此请准备处理nil值:
let arr:Array = ["a","b","c"] find(arr, "c")! // 2 find(arr, "d") // nil
Swift 2.0更新:
findSwift 2.0不再支持旧功能!
使用Swift 2.0,Array可以使用扩展CollectionType(定义为)中定义的函数来查找元素的索引Array:
let arr = ["a","b","c"]
let indexOfA = arr.indexOf("a") // 0 let indexOfB = arr.indexOf("b") // 1 let indexOfD = arr.indexOf("d") // nil
此外,另一个扩展支持在数组中找到满足谓词的第一个元素CollectionType:
let arr2 = [1,2,3,4,5,6,7,8,9,10] let indexOfFirstGreaterThanFive = arr2.indexOf({$0 > 5}) // 5 let indexOfFirstGreaterThanOneHundred = arr2.indexOf({$0 > 100}) // nil
请注意,这两个函数像find以前一样返回可选值。
Swift 3.0更新:
注意indexOf的语法已更改。对于符合条件的物品,Equatable可以使用:
let indexOfA = arr.index(of: "a")
有关该方法的详细文档,请参见https://developer.apple.com/reference/swift/array/1689674-index
对于不符合条件的数组项,Equatable您需要使用index(where:):
let index = cells.index(where: { (item) -> Bool in item.foo == 42 // test if this is the item you're looking for })
Swift 4.2更新:
在Swift 4.2中,index不再使用它,而是将其分开firstIndex并lastIndex进行更好的说明。因此,根据您要查找的项目的第一个还是最后一个索引:
let arr = ["a","b","c","a"]
let indexOfA = arr.firstIndex(of: "a") // 0 let indexOfB = arr.lastIndex(of: "a") // 3
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。