You can get context as -
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
or as in Objective-C
NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).persistentContainer.viewContext;
And extract the data , for example -
var resultArray = try self.context.fetch(EntityName.fetchRequest())
or as in Objective-C
NSFetchRequest<EntityName *> *fetchRequest = [EntityName fetchRequest]; NSError *error ; NSArray *resultArray= [context executeFetchRequest:fetchRequest error:&error];
And select data with sorting -
var resultArray = [EntityName]() do { let request : NSFetchRequest<EntityName> = EntityName.fetchRequest() let sortDescriptor = NSSortDescriptor(key: "somekey", ascending: true) let sortDescriptors = [sortDescriptor] request.sortDescriptors = sortDescriptors resultArray = try self.context.fetch(request) } catch { print("Error") }
or as in Objective-C
NSFetchRequest<EntityName *> *fetchRequest = [EntityName fetchRequest]; NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"someKey" ascending:YES]; fetchRequest.sortDescriptors = @[sortDescriptor]; NSError *error ; NSArray *resultArray= [context executeFetchRequest:fetchRequest error:&error];
And add data -
let entityNameObj = EntityName(context: context) entityNameObj.title = "title"
or as in Objective-C
NSManagedObject *entityNameObj = [NSEntityDescription insertNewObjectForEntityForName:@"EntityName" inManagedObjectContext:context]; [entityNameObj setValue:@"someValue" forKey:@"someKey"];
And keep the context -
do { try self.context.save() } catch _ as NSError { print("Error") }
or as in Objective-C
[((AppDelegate*)[[UIApplication sharedApplication] delegate]) saveContext];
source share