Ios XCode 8未能编译在XCode 9上运行的Swift 3代码

Ios XCode 8未能编译在XCode 9上运行的Swift 3代码,ios,swift,xcode,xcode8,Ios,Swift,Xcode,Xcode8,所讨论的代码是由此产生的,它检查给定的索引是否可用 具体来说,只有在XCode 8.3中,以下问题才能在XCode 9测试版中很好地编译代码。这一代码也肯定是Swift 3,而不是4 我研究了与缺少参数错误相关的问题,典型的回答是确保包含可选参数。然而,在这里,所有3个都包括可选的i,它是类型索引 这里的语法有什么不对吗 语法更改为: public func contains(where predicate: (Element) throws -> Bool) rethrows ->

所讨论的代码是由此产生的,它检查给定的索引是否可用

具体来说,只有在XCode 8.3中,以下问题才能在XCode 9测试版中很好地编译代码。这一代码也肯定是Swift 3,而不是4

我研究了与缺少参数错误相关的问题,典型的回答是确保包含可选参数。然而,在这里,所有3个都包括可选的i,它是类型索引


这里的语法有什么不对吗

语法更改为:

public func contains(where predicate: (Element) throws -> Bool) rethrows -> Bool
现在你应该用这个

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

或者您可以使用类似以下内容:

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

顺便说一句,集合在调用contains后仍然返回bool值

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