我已将旧的Swift代码转换为Xcode中的新Swift3。现在它在我的Swift文件中显示了这些错误:
self.detailViewController = controllers[controllers.count- 1].topViewController as? DetailViewController
错误:
类型'UIViewController'的值没有成员'topViewController'
let sortedTimes = sorted(times!){a,b in a.0.rawValue < b.0.rawValue}
错误:
'sorted'不可用:调用集合
上的sort()方法
答案 0 :(得分:0)
第一个可能是您的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 }
答案 1 :(得分:0)
Swift具有type safety
功能,该功能在编译时完成。 controllers[controllers.count - 1
必须是UINavigationController
类型。所以你必须相应地施展它。
self.detailViewController = (controllers[controllers.count - 1] as? UINavigationController)?.topViewController as? DetailViewController
假设collection(array)包含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}
)。
答案 2 :(得分:0)
使用此行,
let sortedTimes = times.sort({a,b in a.0.rawValue < b.0.rawValue})
希望这会对你有所帮助。