-
Notifications
You must be signed in to change notification settings - Fork 0
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 붙이기(진행중) #35
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 통계에서 필요한 날짜인 실제로 청소가 된 날짜 추가 - 리스트 화면에서 물건을 비웠을때 오늘 날짜로 업데이트
- 함수명을 소문자로 변경 - 이미지이름으로 사용하고 있던 데이터 타입을 [String] 을 [Product] 로 변경
Jinsujin
commented
Dec 10, 2022
Comment on lines
+62
to
+83
private func makeHorizontalScrollView(from products: [Product]) -> some View { | ||
let items: [(id: ObjectIdentifier, image: Image)] = products.map { product in | ||
var image = Image(systemName: "photo") | ||
if (product.photo != nil), let photo = Image(data: product.photo!) { | ||
image = photo | ||
} | ||
return (product.id, image: image) | ||
} | ||
|
||
return ScrollView(.horizontal) { | ||
HStack { | ||
ForEach(items, id: \.self.id) { item in | ||
item.image | ||
.resizable() | ||
.frame(width: screenWidth / 6, height: screenWidth / 6, alignment: .center) | ||
.aspectRatio(contentMode: .fit) | ||
.clipShape(Circle()) | ||
} | ||
} | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사용자가 사진을 등록하지 않아 coredata 에 없다면, 기본 이미지를 적용하도록 했습니다.
뷰를 생성할때 id 가 필요했기때문에 튜플을 사용해 값을 묶어줬습니다.
Jinsujin
commented
Dec 10, 2022
.padding(.horizontal, 16) | ||
|
||
// TODO: 조건에 맞는 물건을 coredata에서 불러오기 | ||
let notYetCleaningProducts = products.filter{ $0.isCleanedUp == false } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FetchResults 는 여기서 값을 수정할 수 없더군요 ㅜㅜ 수정이 필요합니다
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🙋🏻♀️ 리뷰어님께 🙋🏻
통계뷰에 데이터를 붙일려고 보니, 고민해야 할 부분이 많더군요 🥲주륵..
제 생각에는 구조적으로 변경이 필요할듯 한데, 아무래도 뷰를 직접 만드신 분과 맞춰야 할 부분이 있어 여기까지만 작업 했습니다.
📚 작업 사항
🌤 통계뷰에 대한 고민
1. 뷰를 먼저 그려두고 데이터를 가져와 갱신하기
에디님이 작성하신 위 코드의 호출부는
var body:some View{}
입니다.처음에 한 생각은 viewContext 를 사용해 데이터를 불러오기 위해서는
init
에서 coredata 의 데이터를 가져와 초기화하면 되겠다 였습니다.하지만 다시 생각해보니, 달력의 월(Month)이 바뀔때마다 이 데이터는 달라져야 합니다. 즉, 디비에서 비동기적으로 데이터를 가져와 화면에 뿌려줄 필요가 있습니다.
흐름을 아마 이럴듯 합니다
Month를 변경했을때 흐름입니다.
2. 로딩뷰 활용: 데이터를 먼저 가져오고 화면을 그리기
만약 데이터를 가져올때까지 로딩화면을 사용자에게 보여준다면, 우리는 시간을 더 벌 수 있을것 같습니다.
그렇다면 흐름은 다음과 같습니다:
질문) 위 두 방법중 어느것이 더 괜찮을까요?