2017-06-21 49 views
-6

我的代碼:繼承斯威夫特

dbManager = coreDataStack.managedContext as! DbManager 

DbManger類:

class DbManager: NSManagedObjectContext { 

} 

你能告訴我什麼,我錯過了什麼? coreDataStack不是零,managedContext不是零,但應用程序崩潰的鑄件。

回答

1

你有一個基類的實例,NSManagedObjectContext,你試圖將它轉換到它的子類DbManager,但它不是一個。

繼承涉及的是一種關係。 A DbManager實例NSManagedObjectContext,但反過來並不適用。

換句話說,你有一個類叫做Car。然後,您繼承並擴展它以創建一個RocketCar類。你不能只是實例化一個Car並使用轉換將其轉換爲RocketCar

+0

哦,現在我明白了。有什麼辦法可以通過這個參考? – Laxsion12

+2

@ Laxsion12 [NSManagedObject的文檔](https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext)有一個關於子類化的部分,該部分的開頭部分是「強烈建議不要繼承NSManagedObjectContext的子類」,所以我確實沒有想你想要。我相信這是一個[XY問題](http://xyproblem.info/)。你真的想做什麼? – Aehmlo

+0

我想有DbManager裏面有其他DbManagers(NSObject子類)1 DbManager = 1實體在db中。它只是一個實體經理與保存,選擇等方法,你可以通過NSManageObjectContex子類管理器訪問所有這些經理 – Laxsion12