我习惯制作iPhone应用程序,但现在我需要制作一款Mac应用程序。因此我必须切换到Cocoa框架。
在Cocoa中是否有类似于array.index(of :)的东西?
iOS示例:
let string = "Hello.World"
let needle: Character = "."
if let idx = string.characters.index(of: needle) {
let pos = string.characters.distance(from: string.startIndex, to: idx)
print("Found \(needle) at position \(pos)")
}
else {
print("Not found")
}
我遇到问题的实际代码在这里:
func checkBoxTapped(_ sender: NSButton) {
if (sender.state == 1) {
self.selectedReferrals.append(self.referralApplicationList[sender.tag])
}
if (sender.state == 0) {
// Remove
// self.referralApplicationList[sender.tag]
// let foofoo = self.referralApplicationList.indexOf(self.referralApplicationList[sender.tag])
}
}
你的问题与Cocoa或macOS完全无关。你真正要问的是如何在Swift数组上获得index(of:)
函数,答案就是数组中的元素需要是Equatable
。
在你的iOS示例中,characters
是String.CharacterView
的一个实例,它明确地具有index(of:)
函数。
在您的Mac示例中,您没有提供足够的信息,selectedReferrals
变量可能是某些Array
类型的Referral
;例如,[Referral]
。因为有类似的index(of:)
你的Referral
类型需要实现Equatable
协议。否则你需要使用像index(where:)
这样的东西来找到你想要的那个。