Swift - 如何获取具有初始化程序的数组的索引?

Posted

技术标签:

【中文标题】Swift - 如何获取具有初始化程序的数组的索引?【英文标题】:Swift - How to get the index of an array that has an initializer? 【发布时间】:2015-03-25 04:18:23 【问题描述】:

我正在制作一个 ios 应用程序,我使用 swift。我需要一个数组,以便从我的 CoreData 数据库中检索数据。

 var myList : Array<AnyObject> = []

这个“myList”数组有一个名为“Monday”的项目。我想得到这个项目的索引。我尝试使用它来获取索引,但它不起作用。

find(daysOfWeek, "c")!

它给了我一个错误'Genetic Paramater cannot be bound to non-@object protocol'AnyObject''

这个 find 方法适用于像这样的普通数组:

var daysOfWeek = ["Monday", "Tuesday"]

如何获取 myList 数组的项目索引?

【问题讨论】:

【参考方案1】:

如错误所示,find 不能与 AnyObject 一起使用;所以虽然这行不通:

var myList : Array<AnyObject> = []

find(myList, "c")

这将:

var myList : Array<String> = []

find(myList, "c")

由于您正在搜索字符串,因此将myList 转换为Strings 的数组就足够了。

【讨论】:

【参考方案2】:
var shoppingList:Array = ["Chocolate Spread", "Cheese", "Butter"]

var indexOfObject = 0

for var index = 0; index < shoppingList.count ; index++ 
if "Butter" == shoppingList[index] 
    indexOfObject = index



println("Butter index is \(indexOfObject)")

我希望这能帮助你找到对象的索引。我没有任何函数可以直接获取索引,现在我只像上面那样使用。

【讨论】:

是的,它适用于一个简单的数组,但我有一个不同的数组,它是一个 anyobject 数组: var myList : Array = []【参考方案3】:

无论如何,find 需要符合Equatable 的类型(即具有==)。 == 未在 AnyObject 上定义(对象上没有值相等的一般定义)。但是,== 是在 NSObject 上定义的:

import Foundation
var myList : [NSObject] = []
find(myList, "c")

【讨论】:

以上是关于Swift - 如何获取具有初始化程序的数组的索引?的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历数组以获取项目的索引 - swift

(Swift)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?

Swift:获取由某个属性过滤的对象数组的索引

如何枚举swift 4中的zip数组以获取每个对象的索引

swift extention具有循环索引elemnt的数组

如何解决 uiTableview 滚动应用程序崩溃,它会在 swift 中引发数组索引超出范围异常?