Core Data Tips
Core Data Tips
Core Data Tips
How to initiate core data object without inserting it to the context
1
let gif = Gif(entity: NSEntityDescription.entity(forEntityName: String(describing: Gif.self), in: DataController.shared.persistentContainer.viewContext)!, insertInto: nil)
remove All Data
1
2
3
4
5
6
7
8
9
10
let fetchRequest = NSFetchRequest(entityName: String(describing: Gif.self))
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
let moc = DataController.shared.persistentContainer.viewContext
try moc.execute(deleteRequest)
try moc.save()
} catch let error as NSError {
fatalError("Failure to delete context: \(error)")
}
Search
Event if the data has it’s id, I cannot change or set objectId of core data entity object. So even if you find a object with that kind of id, you need to use predicate
1
2
3
4
5
6
7
8
9
10
11
12
13
let moc = DataController.shared.persistentContainer.viewContext
let fetchRequest = NSFetchRequest(entityName: String(describing: Gif.self))
fetchRequest.predicate = NSPredicate(format: "id == %@", gif.id)
isFavorite = false
do {
fetchedGifs = try moc.fetch(fetchRequest) as! [Gif]
if !fetchedGifs.isEmpty {
isFavorite = true
}
} catch {
fatalError("Failed to fetch favorite gifs: \(error)")
}
This post is licensed under CC BY 4.0 by the author.