ios – [AnyObject]数组的swift indexOf

ios – [AnyObject]数组的swift indexOf,第1张

概述试图获取数组的索引([AnyObject]).我错过了什么部分? extension PageViewController : UIPageViewControllerDelegate { func pageViewController(pageViewController: UIPageViewController, willTransitionToViewControllers p 试图获取数组的索引([AnyObject]).我错过了什么部分?

extension PageVIEwController : UIPageVIEwControllerDelegate {      func pageVIEwController(pageVIEwController: UIPageVIEwController,willTransitionToVIEwControllers pendingVIEwControllers: [AnyObject]) {        let controller: AnyObject? = pendingVIEwControllers.first as AnyObject?        self.nextIndex = self.vIEwControllers.indexOf(controller) as Int?      }    }

我尝试过使用Swift 1.2这种方法:

func indexOf<U: Equatable>(object: U) -> Int? {    for (IDx,objectToCompare) in enumerate(self) {      if let to = objectToCompare as? U {        if object == to {          return IDx        }      }    }    return nil  }


解决方法 我们需要将我们正在测试的对象转换为UIVIEwController,因为我们知道控制器数组正在保存UIVIEwControllers(我们知道UIVIEwControllers符合Equatable.

extension PageVIEwController : UIPageVIEwControllerDelegate {    func pageVIEwController(pageVIEwController: UIPageVIEwController,willTransitionToVIEwControllers pendingVIEwControllers: [AnyObject]) {        if let controller = pendingVIEwControllers.first as? UIVIEwController {            self.nextIndex = self.vIEwControllers.indexOf(controller)        }    }}

错误背后的逻辑是,为了让indexOf方法比较传入的对象,它必须使用==运算符对它们进行比较. Equatable协议指定该类已实现此函数,因此这是indexOf要求其参数符合的内容.

Objective-C没有相同的要求,但实际的Objective-C实现最终意味着使用isEqual:方法(NSObject,因此所有Objective-C类实现)将参数与数组中的对象进行比较.

总结

以上是内存溢出为你收集整理的ios – [AnyObject]数组的swift indexOf全部内容,希望文章能够帮你解决ios – [AnyObject]数组的swift indexOf所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存