在swift 3 xcode 8中获取错误

时间:2016-10-05 06:48:59

标签: ios swift xcode swift3 xcode8

我已将旧的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()方法

3 个答案:

答案 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})

希望这会对你有所帮助。