我想在我的iOS應用中使用核心數據,該應用使用UINavigationController
和故事板上的第一個視圖控制器。然後,我想將AppDelegate.h
中的NSManagedObjectContext
和NSPersistentStoreCoordinator
傳遞給UINavigationController
中的第一個視圖控制器。所以我第一次寫了下面的代碼(注意,我還使用UISplitViewController
):如何正確設置Core Data Stack到iOS和Swift中的第一個視圖控制器?
var splitViewController = self.window!.rootViewController as UISplitViewController
var navigationController: UINavigationController!
if splitViewController.viewControllers.count == 2 {
navigationController = splitViewController.viewControllers[1] as UINavigationController
} else {
navigationController = splitViewController.viewControllers[0] as UINavigationController
}
var firstViewController = navigationController.topViewController
firstViewController.managedObjectContext = managedObjectContext
但是,編譯說UIViewController
不具備這樣的特性managedObjectContext
。但是,這很奇怪因爲當我試圖通過println(firstViewController)
記錄它,它說,它是FirstViewController
,不UIViewController
實例......但無論如何,我將向下轉換它改成了以下內容:
var firstViewController = navigationController.topViewController as FirstViewController
然而,然後構建工作正常,但它立即崩潰的錯誤:"Swift dynamic cast failed"
在運行時。
那麼我怎麼能通過NSManagedObjectContext
(和NSPersistentStoreCoordinator
)到第一個視圖控制器?
我在iOS(iPad)應用程序中使用Xcode 6.1 Beta 2和Swift。
兩個'navigationController'和'topViewController'不爲空,但它返回'navigationController.topViewController不是FirstViewController'。所以它沒能將'topViewController'向下翻到'FirstViewController',但我不知道爲什麼。 – Blaszard 2014-10-30 06:57:42