Skip to content
New issue

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

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

Already on GitHub? # to your account

동기화 메모장 [STEP4] 호박, 아리 #98

Closed
wants to merge 5 commits into from

Conversation

hoBahk
Copy link

@hoBahk hoBahk commented Feb 24, 2022

안녕하세요. 웨더! @SungPyo

호박 @hoBahk 아리 @leeari95 입니다!
STEP4 요구사항 모두 구현하여 PR 보내드립니다.

혹시 부족한 점이나 놓친 부분이 있다면 번거롭더라도 한번 더 짚어주시면 감사하겠습니다. 🙇🏻‍♀️

고민했던 점

1. 검색 기능

  • 검색어를 입력할 때마다 검색어에 해당하는 메모를 실시간으로 보여줄 수 있도록 NSPredicate를 활용하여 fetch하는 기능을 추가
  • 검색어가 빈 문자열("")이라면 다시 메모의 전체목록을 보여줄 수 있도록 구현

2. 지역화

  • 언어 영어를 기본설정으로 하고 한국어에 대해서도 다국어화를 지원하도록 구현
  • 날짜 시간은 시스템 시간을 따르도록 하고, 날짜 형식은 언어에 따라 포맷을 변경되도록 구현

3. 접근성

  • 우측 메모 상세 내용의 경우 VoiceOver가 리스트를 읽은 후, 텍스트를 바로 읽어주는 것을 확인하고, 메모 내용이라는 accessibilityLabel을 추가하여, 메모 텍스트를 읽기 전에 좀 더 화면의 구성요소를 이해하기 쉽도록 구현
  • View의 텍스트 요소들에 Dynamic Type을 적용하여 사용자가 원하는 사이즈로 텍스트 크기를 설정할 수 있도록 유연성을 제공

궁금했던 것 / 조언이 필요한 점

1. Localization을 할 때 Cancel, OK 등은 자동으로 지역화해주지 않나요?

  • 단순히 취소나 확인 같은 것들은 자동으로 지역화를 해주는 것으로 알고있었는데... 어째서인지 자동으로 되지않는 것 같아서 Cancel 이나 OK도 Localization을 추가해주었는데.. 혹시 웨더는 이 부분에 대해서 알고있는게 있으실까요...? 구글링을 해도 찾지못해서 질문드립니다.

2. Dropbox에서 백업했던 파일을 다운로드해서 파일을 덮어쓰면 데이터베이스 에러 발생

  • 코어데이터와 관련된 sqlite파일을 외부에서 직접 건들이게되면 log에 충돌에러나, 데이터베이스 에러가 발생하는 것을 경험했는데요.
    • SQLite error code:6922, 'disk I/O error' CoreData: error: (6922) I/O error for database at
    • database integrity compromised by API violation: vnode unlinked while in use
  • 외부에서 직접 건들이는 문제, 그리고 다운로드를 통해 코어데이터 파일을 바꿔치는 문제 때문에 발생하는 에러라고 이해했는데.. 이 부분은 그냥 넘어가도 되는 에러인걸까요?

3. CoreData를 불러오는 fetch 기능의 비용

  • 검색기능을 구현할 때 두 가지 방법으로 고려했습니다.

    1. 한 글자를 입력할 때마다 입력한 텍스트가 포함된 메모를 CoreData에서 fetch하여 가져오는 방법
      • 장점: 모든 메모 데이터를 직접 가지고 있지 않고 CoreData에서 필요한 메모만 가져올 수 있다
      • 단점: 메모가 수백개 수천개가 된다면 fetch의 비용이 얼마나 드는지 알 수 없다.
    2. fetch를 한번만 받아 저장해 놓고 한 글자를 입력할 때마다 저장해놓은 데이터에서 filter를 통해서 보여주는 방법
      • 장점: CoreData에서 fetch 하는 것 보다는 배열에서 filter 하는 것이 더 비용이 적을 것이다?
      • 단점: 모든 메모 데이터를 가지고 있게 되어 메모가 수백개 수천개가 된다면 메모리 관리 측면에서 부담이 된다.
  • 저희는 데이터를 CoreData에서 관리하고 필요한 데이터만 가져오는 것이 더 적절하다고 생각하여 1번의 방법으로 구현하였습니다. 웨더는 어떻게 생각하시는지 웨더의 의견이 궁금합니다~!!

이번 피드백도 잘 부탁드리겠습니다~ 😁🙏🏻

leeari95 and others added 5 commits February 23, 2022 16:19
- PersistentManager 내부 fetch를 필터링으로 진행해서 notes의 값을 업데이트해주는 updateSearchResult 메소드 추가
- UISearchController를 설정하여 NavigationItem에 추가하는 부분 구현
- 검색어를 적을 때 마다 필터링하도록 UISearchResultsUpdating 메소드 구현
…tyLabel 추가 #12

- 필요없는 주석 제거
- 매직넘버를 .zero로 리팩토링
- Localizable.strings에 "Note Content" 추가
- NotesCell에 setContentCompressionResistancePriority를 init(1000) 대신에 required로 대체
@yagom yagom closed this Mar 24, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants