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)如何从元组数组[(Date, MyClass)]中获取元组元素(Date, MyClass)的索引?