Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CoreData에서 Page 데이터 읽어오기 및 보여주기 (멀티미디어 포함 X) #101

Merged
merged 14 commits into from
Nov 30, 2024

Conversation

k2645
Copy link
Collaborator

@k2645 k2645 commented Nov 29, 2024

#️⃣ 연관된 이슈


⏰ 작업 시간

예상 시간 실제 걸린 시간
2 5

Swift6 이슈로.. 화면이 되는지 확인하는데 시간을 거의 다쓴..

📝 작업 내용

  • CoreData에서 저장된 값을 불러온다.
  • 불러온 값을 각각의 PageViewController에 띄운다.
  • BookUseCase, BookRepository Sendable 채택

📸 스크린샷

페이지별로 불러온 데이터 띄우기

테스트용으로 CoreData에 저장한 Book

Book(
    id: bookID,
    title: "기록소",
    pages: [
        Page(metadata: [:], text: "1페이지 내용입니다"),
        Page(metadata: [:], text:
                """
                2페이지
                안녕하세요?
                아래로
                글을
                내이면
                어떻게
                될까요?
                잘?
                보일까요??












                ㅋㅋ



                ㅋㅋ


                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                ㅋㅋ
                """),
        Page(metadata: [:], text: "3페이지"),
        Page(metadata: [:], text: "4페이지"),
        Page(metadata: [:], text: "5페이지")
    ]
)

📒 리뷰 노트

  • 아직 멀티미디어는 연동해놓지 않은 상황입니다 ! 이후 PR에서 계속해서 작업하며 멀티미디어까지 첨부할 수 있도록 만들 예정입니다.
  • 페이지를 넘어가는 데이터가 있는 경우 해당 페이지만 예외적으로 스크롤뷰가 들어가야하는데 아직 그 부분은 구현이 되어있지 않습니다. 해당 부분 또한 다음 PR에서 이어 작업할 예정입니다.

@k2645 k2645 added ✨ Feature 기능 관련 작업 👷‍♂️ Refactor 코드 개선, 가독성 개선, 주석 labels Nov 29, 2024
@k2645 k2645 added this to the 0.4 milestone Nov 29, 2024
@k2645 k2645 self-assigned this Nov 29, 2024
@k2645 k2645 linked an issue Nov 29, 2024 that may be closed by this pull request
Copy link
Collaborator

@Kyxxn Kyxxn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니더 ~~
역시 빛영현

Comment on lines 4 to +5
public struct BookCoverDTO {
let identifier: UUID
let id: UUID
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Identifiable을 안쓰는데 id로 바꾸신 이유가 있나용 ??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다른 곳 들과의 통일성을 위해서 바꿨습니다 ! Entity와 DTO, CoreDataModel 각각의 attributes 이름이 같아야 헷갈리지 않을 것이라고 생각하여 바꿔줬습니다!

Comment on lines 14 to 25
public func create(data: BookCoverDTO) async -> Result<Void, MHDataError> {
let context = coreDataStorage.persistentContainer.viewContext
do {
try await context.perform {
guard let entity = NSEntityDescription.entity(forEntityName: "BookCoverEntity", in: context) else {
throw MHDataError.noSuchEntity(key: "BookCoverEntity")
}
let bookCover = NSManagedObject(entity: entity, insertInto: context)
bookCover.setValue(data.identifier, forKey: "identifier")
bookCover.setValue(data.id, forKey: "id")
bookCover.setValue(data.title, forKey: "title")
bookCover.setValue(data.category, forKey: "category")
bookCover.setValue(data.color, forKey: "color")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코어데이터 CRUD 에 대한 메소드가 do-catch부터 entity 꺼내는 로직 등등 겹치는게 많아서
perform 처리하는 메소드를 지난 PR에서 만들어뒀습니다 !
이걸로 수정하는 건 어떨까요 ??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

모두 수정했습니다 .ᐟ.ᐟ
추가로 perform 메소드는 CoreDataStorage 객체를 가지고 있는 모든 곳에서 공통적으로 사용되는 메서드라 판단하여 CoreDataStorage의 internal 메서드로 빼주어 추가적인 보일러 플레이트 코드를 방지하도록 코드 수정했습니당 !

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

역시.. 말 안 해도 알아서 해주는 빛영현

Copy link
Collaborator

@iceHood iceHood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

영현님 너무 고생 많으셨씁니다!! 빛빛빛...

@k2645 k2645 merged commit fa83564 into develop Nov 30, 2024
2 checks passed
@k2645 k2645 deleted the feature/load-page-data branch November 30, 2024 04:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 관련 작업 👷‍♂️ Refactor 코드 개선, 가독성 개선, 주석
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Page 불러오기
3 participants