I have found a few questions regarding this issue, yet none of them were helping with my problem. I am trying to save an object to core data using this code (which worked perfec
For anyone coming across this in the future, I just ran into this problem myself and it turned out that I was actually getting a stack overflow from a recursive function.
Apparently calling setValue:forKey:
on an NSObject calls the respective set[Key]
function, where [Key]
is the (capitalized) name you gave to the forKey
section.
So, if like me, you have code that looks like the following, it will cause an infinite loop and crash.
func setName(name: String) {
self.setValue(name, forKey: "name")
}
let fetchRequest = NSFetchRequest(entityName: "Patient")
do {
let fetchedResults = try managedObjectContext!.executeFetchRequest(fetchRequest)
print("\(fetchedResults)")
} catch {
print("error")
}
The above code worked for me. Maybe the issue maybe with how your core data is managed.
managedObjectContext
is actually getting created.What helped me in similar problem (xCode 7, Swift 2):
reading this question
Or more quickly without explaining the reason of solution: just comment @objc(className)
in your NSManagedObjectSubclass
, that was generated from your CoreData Entity (@objc(Patient)
- in your case ).
This solution (if issue still appears) does not applicable to xCode 7.1/Swift 2.1, as the way of generating NSManagedObjectSubclasses
was changed.
Don't forget about cleaning your project (Product > Clean
) and deleting the app from your device/simulator to replace CoreData storage on it.
Actually this problem happened often when you have any property in input declared as type NSError
and the compiler expect an Error
output, so change the input type to Error
usually solve this issue.
Product
> Clean
I had similar issue. I deleted the app from the device. Then "Product->Clean" in the XCode menu. When I ran the app again, the issue got resolved.