[ swift - CoreData ]

Yr Yrยท2024๋…„ 2์›” 14์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
35/39
- ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•œ CoreData
import Foundation
import CoreData

class CoreDataManager {
	static var shared: CoreDataManager = .init()
    
    let container = {
    	let container = NSPersistentContainer(name: "CoreData ํŒŒ์ผ์ด๋ฆ„")
        container.loadPersistentStores { _, error in
        	if let error = error {
            	fatalError("Failed to load persistent stores: \(error)")
            }
        }
        
        return container
    }()
    
    // ์™ธ๋ถ€์—์„œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ด์คŒ
    private init() {}
    
    // create
    func createVoca(word: String, meaning: String) {
    	// ๋ฐ์ดํ„ฐ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•œ Managed Object Context๋ฅผ ์–ป์Œ
    	let context = container.viewContext	
        // entity์˜ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ
        let object = NSEntityDescription.insertNewObject(forEntityName: "entity ์ด๋ฆ„", into: context)
        object.setValue(word, forKey: "attribute ์ด๋ฆ„")
        object.setValue(false, forKey: "attribute ์ด๋ฆ„")
    }
    
    // read
    func readVoca() -> [NSManagedObject] {
    	// ๋ฐ์ดํ„ฐ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•œ Managed Object Context๋ฅผ ์–ป์Œ
    	let context = container.viewContext	
        let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "entity ์ด๋ฆ„")
        let result = try? context.fetch(fetchRequest)
        
        return result ?? []
    }
    
    // delete
    func deleteVoca(_ voca: NSManagedObject) {
    	let context = container.viewContext
        context.delete(voca)
        
        do {
        	try context.save()
        } catch {
        	fatalError("Failed to save context after deletion: \(error)")
        }
    }
}

0๊ฐœ์˜ ๋Œ“๊ธ€