在Swift中,如何检查数组中是否存在元素?Xcode中没有任何建议contain,include或has和经书的快速搜索却一无所获.知道怎么检查这个吗?我知道有一个方法find可以返回索引号,但是有一个方法可以返回像ruby这样的布尔值#include?吗?
我需要的例子:
var elements = [1,2,3,4,5]
if elements.contains(5) {
//do something
}
Run Code Online (Sandbox Code Playgroud) 有没有一种名为indexof或类似的方法?
var array = ["Jason", "Charles", "David"]
indexOf(array, "Jason") // Should return 0
Run Code Online (Sandbox Code Playgroud) 对于数组:我该怎么做indexOfObject或正确的containsObject?
我的意思是我知道我可以将数组桥接到NSArray那里并在那里做^^
但是必须有一种"原生"方式来做到这一点
PS containsObject我想我可以过滤数组但是对于indexOf?
我在这个表格视图中有一个数字列表.

如您所见,数字会重复出现.让我们将一组重复的数字视为一组.所以有1组,2组等等.
我想要做的是当应用程序启动时,我需要自动滚动到指定组的开始位置.在进一步解释之前,这是我的代码到目前为止.
import UIKit
class TableViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
private var scrollToTime = true
private var items = [Int]()
private var groupNoToScroll = 12
override func viewDidLoad() {
super.viewDidLoad()
items = [1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, 18, …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何在数组中找到对象的索引.例如,我有这个数据结构:
class Person {
var name: String
var age: Int
init(name personName: String, age personAge: Int) {
self.name = personName
self.age = personAge
}
}
let person1 = Person(name: "person1", age: 34)
let person2 = Person(name: "person2", age: 30)
...
var personsArray = [person1, person2, ...]
Run Code Online (Sandbox Code Playgroud)
我尝试使用,personsArray.index(where: ....)但我不明白如何使用它.index(of: ...)不起作用.我认为因为personsArray不符合Equatable协议......
我有一个自定义对象数组,Service在didSelectRow我填充我选择的该对象数组:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
let services:[Service] = self.menu[indexPath.section].services
self.selectedServices.append(services[indexPath.row])
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何从didDeselectRow中检索它:
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
if let cell = tableView.cellForRowAtIndexPath(indexPath) {
cell.accessoryType = .None
let services = self.menu[indexPath.section].services
let service = services[indexPath.row]
//how can I found the index position of service inside selectedServices?
}
}
Run Code Online (Sandbox Code Playgroud) 我有对象数组并尝试获取具有特定值的对象的索引
对于前。对于简单的数组,我们可以使用以下方法来实现
var numbers = [1, 2, 3, 4, 5]
let get3 = exchangeRateList.firstIndex(of: 3). // result 2
Run Code Online (Sandbox Code Playgroud)
如何对具有对象的数组实现相同的效果(例如,获取具有 id 3 的对象的索引)
var objarray = [Name]()
objarray.append(Name(id: 1, name: "Nuibb"))
objarray.append(Name(id: 2, name: "Smith"))
objarray.append(Name(id: 3, name: "Pollock"))
objarray.append(Name(id: 4, name: "James"))
objarray.append(Name(id: 5, name: "Farni"))
objarray.append(Name(id: 6, name: "Kuni"))
Run Code Online (Sandbox Code Playgroud) 这样做有"更好"(不那么冗长)的方式吗?
var found: Int?
for i in 0...myArray-1 {
if myArray[i] == 3 {
found = i
}
}
Run Code Online (Sandbox Code Playgroud)
相近
let i = find(myArray, "1")
Run Code Online (Sandbox Code Playgroud)
但对于Int?
这个问题与如何在Apple的swift中找到列表项的索引略有"不同" ?因为它直接解决了Int的find函数,而不是String.当然,唯一的区别是标题,并指出你可以删除引号来获得Int.
我有这个Objective-c方法,我正在尝试重写swift.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
int index = [navigationController.viewControllers indexOfObject:viewController];
self.pageControl.currentPage = index;
}
Run Code Online (Sandbox Code Playgroud)
我在使用swift编写这一行时遇到了困难:
int index = [navigationController.viewControllers indexOfObject:viewController];
Run Code Online (Sandbox Code Playgroud)
我如何访问IndexOfObject?
如果我有一个数组:
let array = [
["Hamburger", "Nachos", "Lasagne"],
["Tomatoes", "Apples", "Oranges"],
["Soda", "Juice", "Water"]
]
Run Code Online (Sandbox Code Playgroud)
例如“Apples”的索引是什么?有没有办法以编程方式获取它?