我正在使用NSArray的是indexOfObjects(passingTest :),但是在我将代码转换为Swift 3之后,我得到了错误:"不明确地使用'indexOfObject(passingTest :)'".我的代码在Swift 2.3下运行良好.
let indexesOfBubbleConstraints = bubbleConstraints.indexesOfObjects(passingTest: { (constraint, idx, stop) in
if let view = constraint.firstItem as? UIView{
return view.tag == usernameTag
}
else{
return false
}
})
Run Code Online (Sandbox Code Playgroud)
对于斯威夫特3,我也不得不投constraint来AnyObject,但这并不解决实际问题.
我最终使用func indexesOfObjects(options: NSEnumerationOptions = [], passingTest: (Any, Int, UnsafeMutablePointer<ObjCBool>) -> Bool)了一个空数组来获取选项,如下所示.这有效,但我仍然不明白为什么我的原始实现会出现"不明确..."错误.
let indexesOfBubbleConstraints = bubbleConstraints.indexesOfObjects(options: [], passingTest: { (constraint, idx, stop) in
if let view = (constraint as AnyObject).firstItem as? UIView{
return view.tag == usernameTag
}
else{
return false
} …Run Code Online (Sandbox Code Playgroud) 例如,我有以下课程:
class Person: Any {
dynamic var name: String = ""
dynamic var surname: String = ""
}
Run Code Online (Sandbox Code Playgroud)
另外,我有以下数组与"Person"类的实例:
let person1 = Person(); person1.name = "John"; person1.surname = "Smith"
let person2 = Person(); person2.name = "Ivan"; person2.surname = "Ivanov"
let person3 = Person(); person3.name = "Sam"; person3.surname = "Woodman"
let personList = [person1, person2, person3]
Run Code Online (Sandbox Code Playgroud)
有没有办法以某种方式得到所有约翰斯的指数?
我无法在数组中获得可重复的字符串位置.我的代码是这样的:
var startDates : [String] = ["06/11/2018", "16/11/2018", "26/11/2018", "06/11/2018"]
var nomor : [Int] = []
for date in startDates {
if startDates.contains(where: {
$0.range(of: "06/11/2018", options: .caseInsensitive) != nil
}) == true {
let nomornya = startDates.index(of: "06/11/2018")!
nomor.append(nomornya)
}
}
print("nomornya:\(nomor)")
Run Code Online (Sandbox Code Playgroud)
结果:
nomornya:[0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
我想这样:
nomornya:[0, 3]
Run Code Online (Sandbox Code Playgroud)
这样做的正确代码是什么?