代码转换 swift 2 --> 3 导致索引路径处的二进制运算符错误
Posted
技术标签:
【中文标题】代码转换 swift 2 --> 3 导致索引路径处的二进制运算符错误【英文标题】:Code conversion swift 2 --> 3 resulting in binary operator error at index path 【发布时间】:2019-06-04 06:33:08 【问题描述】:使用 Xcode 7 和 swift 2。 应用程序运行良好。 更新到 Xcode 8。它自动从 swift 2 --> swift 3 转换代码。 现在我的表格视图的代码有问题。
这行代码出错:
if (indexPath as NSIndexPath).row == 0 || indexPath == 1
counter = 0
self.performSegue(withIdentifier: "Day1", sender: self)
正如它所说,二元运算符'=='不能应用于操作数类型'index path'和'int'
这是什么意思,我该如何解决?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
if (indexPath as NSIndexPath).row == 0 || indexPath == 1
counter = 0
self.performSegue(withIdentifier: "Day1", sender: self)
if (indexPath as NSIndexPath).row == 1
counter = 1
self.performSegue(withIdentifier: "Day2", sender: self)
【问题讨论】:
indexPath == 1
甚至在 Swift 2 中都不起作用。如果该行是 1
,那么是否打算同时执行两个 segue??
【参考方案1】:
错误来自这段代码
indexPath == 1
你需要得到它的row
属性,它的类型是Int
indexPath.row == 1
另请注意,无需将IndexPath
转换为NSIndexPath
indexPath.row
那么我认为您可能不想在第一个 if 语句中检查第二个条件,因为在这种情况下,第二个 if 语句不会按照您的意愿执行
if indexPath.row == 0
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
if indexPath.row == 0
counter = 0
self.performSegue(withIdentifier: "Day1", sender: self)
else if indexPath.row == 1
counter = 1
self.performSegue(withIdentifier: "Day2", sender: self)
【讨论】:
以上是关于代码转换 swift 2 --> 3 导致索引路径处的二进制运算符错误的主要内容,如果未能解决你的问题,请参考以下文章
导致“无法将不可变作为 inout 传递”的 Swift 3 转换 [重复]
从 Swit2.3 到 Swift3 的转换导致“以 NSException 类型的未捕获异常终止”
从 Swift 2.3 -> 3.2 转换时,无法将 String 类型的值转换为指定类型 NSManagedObjectContext