indexAtPosition、urlRequest.url!.isEqual 的 swift 3 等效项

Posted

技术标签:

【中文标题】indexAtPosition、urlRequest.url!.isEqual 的 swift 3 等效项【英文标题】:swift 3 equivalent for indexAtPosition, urlRequest.url!.isEqual 【发布时间】:2016-10-06 11:17:08 【问题描述】:

您好,从 swift 2.2 升级到 swift 3 时出现以下错误

参数标签 '(atPosition:)' 不匹配任何可用的重载"

下面是swift 2.2中的以下代码,你们能帮帮我吗?

private func getIndexInTheLastSection(indexPath: NSIndexPath) -> Int? 
        let index = indexPath.indexAtPosition(indexPath.length - 1)
        if index == NSNotFound 
            return nil
        
        return index
    

///////////////

【问题讨论】:

编译器不给出建议吗?或者将代码粘贴到 Playground 中,然后您将获得详细信息。替代方法是重新键入函数并使用代码完成或阅读文档。 在 Swift 3 中你应该使用IndexPath,然后它就是if let index = indexPath.last ... 。 – 请注意,在一个问题中混合两个不同的问题是有问题的。如果每个问题都有不同的人给出答案,你会接受哪个答案? Martin R : 为一个答案编辑了上述问题 【参考方案1】:

对于带有URLisEqual 错误,请使用== 而不是isEqual 进行比较。

if urlRequest.URL! == strongSelf.request?.urlRequest?.URL 

对于错误Argument labels '(atPosition:)'

indexPath.index(atPosition: (indexPath as NSIndexPath).length - 1)

【讨论】:

在 Swift 3 中,他们使用 URL 而不是 NSURLURL 没有 isEqual 所以连击使用 == 尝试使用上面的第一个为 urlRequest 工作得很好。第二个我遇到了一个问题'indexPAth 类型的值没有成员' 我得到同样的错误'indexPAth 类型的值没有成员长度' 我现在收到第一个错误“参数标签(atPostion)”不匹配任何可用的重载 仍然收到相同的错误“参数标签(atPostion)”不匹配任何可用的重载–

以上是关于indexAtPosition、urlRequest.url!.isEqual 的 swift 3 等效项的主要内容,如果未能解决你的问题,请参考以下文章

让 Objective-C 方法返回任何东西

移动到 cocoapod 时,Swift Routing 枚举崩溃

Swift3.0:NSURLConnection的使用

在视图控制器之间解析 JSON 数据

无法在 Alamofire 中禁用缓存(Xcode 9 - swift 4)

如何在 alamofire 5.0.2 版本中设置自定义超时