XCode 8无法编译适用于Xcode 9的Swift 3代码

问题描述:

有问题的代码有一点来自于此answer,并检查给定的索引是否可用。XCode 8无法编译适用于Xcode 9的Swift 3代码

具体来说,只有在XCode 8.3下面的问题出现了(代码在XCode 9 beta中编译得很好,这段代码也是明确的Swift 3,而不是4)。

enter image description here

我看着有关“缺少的参数”的错误问题,而通常的做法是确保包括可选的参数。但是,在这里全部3个包括optionali,这是类型Index

我在这里的语法做错了什么?

的语法改为这样:

public func contains(where predicate: (Element) throws -> Bool) rethrows -> Bool 

现在,你应该使用这一个

self.indices.contains(where: { (object) -> Bool in 
    //make comparison here 
}) 

或者

self.indices.contains(where: {$0 == "equal to something"}) 

或者你可以用这样的:

if self.indices.first(where: {$0 == "equal something"}) != nil { 
    return self[i] 
}else{ 
    return nil 
} 

顺便说一句,集合在调用“contains”后仍然有返回的bool值。 Check this

+0

完美。谢谢你。 – daspianist