相关疑难解决方法(0)

在Swift 3转换之后,我无法摆脱错误:"不明确地使用'indexOfObject(passingTest :)'"

我正在使用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,我也不得不投constraintAnyObject,但这并不解决实际问题.

我最终使用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)

compiler-errors ambiguous ios swift3 ios10

6
推荐指数
1
解决办法
2139
查看次数

数组中元素的索引

例如,我有以下课程:

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)

有没有办法以某种方式得到所有约翰斯的指数?

swift

2
推荐指数
1
解决办法
57
查看次数

在数组中找到可重复的字符串位置

我无法在数组中获得可重复的字符串位置.我的代码是这样的:

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)

这样做的正确代码是什么?

arrays string swift

2
推荐指数
1
解决办法
57
查看次数

标签 统计

swift ×2

ambiguous ×1

arrays ×1

compiler-errors ×1

ios ×1

ios10 ×1

string ×1

swift3 ×1