I want to work through this example code in which Swift and CoreData is used to create a table. However, using Swift 3 I fail to get it to work. Most importantly, I cannot properly replace the line
// set up the NSManagedObjectContext
let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
managedContext = appDelegate.managedObjectContext
even though I found this related question (which however is iOS not OS X). How can I replace that piece of code which produces the error message Value of type 'AppDelegate' has no member 'managedContext'
?
Swift 3 in macOS
The error you provided says
'AppDelegate' has no member 'managedContext'
instead of'AppDelegate' has no member 'managedObjectContext'
, which would lead me to assume you just need to fix your syntax.Swift 3 in iOS 10
Core Data needs at least 3 things to work:
Put those three things together and you get the Core Data Stack.
When iOS 10 came out, a new object was introduced called the NSPersistentContainer which encapsulates the core data stack.
How to create the container object is answered here.
managedObjectContext
is now a property calledviewContext
, accessed via:A helpful article is What's New in Core Data, but if that reading seems a little too heavy, this WWDC video does a great job of explaining this topic.
For macOS and Swift 3.1
AppDelegate
has below members onlyso use
This will work fine
I swift 3 you can get managedContext set by this code: