2016-10-05 76 views
1

我已經將舊的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} 

錯誤

「排序」是不可用:呼籲收集

+0

試試這個self.detailViewController =(controllers [controllers.count-1] as!UINavigationController).topViewController as? DetailViewController –

回答

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 } 
+0

第二個修復帶走了錯誤,但接着下一行給了我一個錯誤任何想法 todayTimes = sortedTimes tableView.reloadData(sorted) – sabrefm1

+0

你在下一行@ sabrefm1上得到的錯誤是什麼? –

0

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})。

+0

從技術上講,Swift 3是類型安全的並不是錯誤的。但是,AFAIK,Swift一直是類型安全的。 –

+0

我做了更正。 – pkc456

+0

第一個答案是正確的,但我仍然看到第二個錯誤 調用sort()方法 – sabrefm1

0

使用這條線,

let sortedTimes = times.sort({a,b in a.0.rawValue < b.0.rawValue}) 

希望這會幫助你。

相關問題