在swift中获取错误3 xcode 8
我已经将旧的Swift代码转换为Xcode中的新Swift3。现在,它正显示出这些错误在我的雨燕文件:在swift中获取错误3 xcode 8
self.detailViewController = controllers[controllers.count- 1].topViewController as? DetailViewController
错误:类型的UIViewController“的
值没有任何成员 'topViewController'
let sortedTimes = sorted(times!){a,b in a.0.rawValue < b.0.rawValue}
错误:
“排序”是不可用:呼吁收集
第一个排序()方法可能是您的UINavigationController
放的UIViewController
个收藏。你需要让编译器知道它确实是UINavigationController
。
self.detailViewController = (controllers[controllers.count - 1] as? UINavigationController)?.topViewController as? DetailViewController
第二个是sorted
函数现在已经成为一个实例方法。
let sortedTimes = times!.sorted { $0.0.rawValue < $1.0.rawValue }
第二个修复带走了错误,但接着下一行给了我一个错误任何想法 todayTimes = sortedTimes tableView.reloadData(sorted) – sabrefm1
你在下一行@ sabrefm1上得到的错误是什么? –
Swift的type safety
功能在编译时完成。 controllers[controllers.count - 1
必须是UINavigationController
类型。所以你必须相应地施放它。
self.detailViewController = (controllers[controllers.count - 1] as? UINavigationController)?.topViewController as? DetailViewController
假设集合(数组)包含int值。
let times : NSArray = [1,2,3,4]
let sortedTimes = times.sorted(by: {a,b in (a as! Int) < (b as! Int)})
您可以更新as!
低垂到你指定的类型({a,b in (a as AnyObject).rawValue < b.0.rawValue}
)。
使用这条线,
let sortedTimes = times.sort({a,b in a.0.rawValue < b.0.rawValue})
希望这会帮助你。
试试这个self.detailViewController =(controllers [controllers.count-1] as!UINavigationController).topViewController as? DetailViewController –