When I call the function CacheStation I get the error: CoreData: error: Failed to call designated initializer on NSManagedObject class SaveModel. Nothing more nothing less. How
Here's what happens:
let sm = SaveModel();
you are creating a new instance of SaveModel
.SaveModel
is a subclass of NSManagedObject
NSManagedObject
has a designated initializer called init(_: insertIntoManagedObjectContext:)
You need to either call the NSManagedObject
designated initializer or create your own designated initializer that calls the superclass designated initializer.
This line:
let sm = SaveModel();
uses the standard init()
method to create an instance of SaveModel
, but NSManagedObjects
must be initialised using the designated initialiser:
init(entity entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)
(or, as in your CacheStations method, using NSEntityDescription.insertNewObjectForEntityForName(_, inManagedObjectContext: moc)
which calls the designated initialiser).
Since it seems sm
is created only to have an instance on which to call CacheStations
, I would change that method to a class method:
class func CacheStations(){
and change your saveShizzle
method to use the class method:
@IBAction func saveShizzle(sender: AnyObject) {
SaveModel.CacheStations();
}