티스토리 뷰

📱 SwiftUI

Core Data를 이용한 CRUD 구현

James Wetzel 2023. 4. 9. 14:08

1. C(Create Data)

let insert_learningLogEntity = LearningLogEntity(context: self.moc)
insert_learningLogEntity.alphabet = wordEntityExtend.alphabet ?? ""
insert_learningLogEntity.meaning = wordEntityExtend.meaning ?? ""
insert_learningLogEntity.registrationDate = Date.now

if self.moc.hasChanges {
    do {
        try self.moc.save()
    } catch {
        if let nsError = error as NSError? {
            fatalError("Unresolved Error: \(nsError), \(nsError.userInfo)")
        }
    }
}

 

2. R(Read Data)

let nsFetchRequest_LearningLogEntity = NSFetchRequest<NSFetchRequestResult>(
    entityName: EntityName.LearningLogEntity.rawValue
)

nsFetchRequest_LearningLogEntity.predicate = NSPredicate(
    format: "alphabet == %@ && meaning == %@",
    wordEntityExtend.alphabet ?? "",
    wordEntityExtend.meaning ?? ""
)

do {
    let resultFetch = try self.moc.fetch(nsFetchRequest_LearningLogEntity)
    if resultFetch.count == 0 {
        let insert_LearningLogEntity = LearningLogEntity(context: self.moc)
        insert_LearningLogEntity.alphabet = wordEntityExtend.alphabet ?? ""
        insert_LearningLogEntity.meaning = wordEntityExtend.meaning ?? ""
        insert_LearningLogEntity.registrationDate = Date.now
    }
} catch {
    if let nsError = error as NSError? {
        fatalError("Unresolved Error: \(nsError), \(nsError.userInfo)")
    }
}

if self.moc.hasChanges {
    do {
        try self.moc.save()
    } catch {
        if let nsError = error as NSError? {
            fatalError("Unresolved Error: \(nsError), \(nsError.userInfo)")
        }
    }
}

 

3. U(Update Data)

 

4. D(Delete Data)

let nsFetchRequest_LearningLogEntity = NSFetchRequest<NSFetchRequestResult>(
    entityName: EntityName.LearningLogEntity.rawValue
)

nsFetchRequest_LearningLogEntity.predicate = NSPredicate(
    format: "alphabet == %@ && meaning == %@",
    wordEntityExtend.alphabet ?? "",
    wordEntityExtend.meaning ?? ""
)

do {
    let fetchedResult = try self.moc.fetch(nsFetchRequest_LearningLogEntity)
    if let dataDelete = fetchedResult.first {
        self.moc.delete(dataDelete as! NSManagedObject)
    }
} catch {
    if let nsError = error as NSError? {
        fatalError("Unresolved Error: \(nsError), \(nsError.userInfo)")
    }
}

if self.moc.hasChanges {
    do {
        try self.moc.save()
    } catch {
        if let nsError = error as NSError? {
            fatalError("Unresolved Error: \(nsError), \(nsError.userInfo)")
        }
    }
}

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함