전체 글

개발일지/알러지키미

[개발일지/알러지키미] #6. DTO, Enum UserDefaults에 저장하기

3월 14일 (목) Iteration 3 中 1일 차 Enum 데이터 UserDefaults에 접근하기 사용자의 알레르기 정보를 받아서 Allergy 배열을 UserDefaults에 저장하고자 했다. 그래서 UserDefaults에 알러지 데이터를 담고자 아래와 같이 코드를 작성했는데.. 오류가 발생했다. 기억을 더듬어보니 UserDefaults에는 swift 기본 타입인 Bool , Int, Double, Float, String, URL 등...만 접근할 수 있다. 그런데 나는 Enum인 Allergy를 담으려 했던 것🚨 UserDefaults에 직접 만든 구조체나 열거형을 담을 수는 없을까? 여기서 DTO(Data Transfer Object)라는 개념을 학습했다. DTO는 데이터 전송 객체로, 데..

개발일지/알러지키미

[개발일지/알러지키미] #5. CollectionView로 Tag List 구현하기

3월 13일 (수) Iteration 2 中 3일 차 Tag List 구현하기 오늘은 온보딩 화면을 구성하면서 Tag List를 구현했다. 이전에 미리알림 앱을 구현하면서 태그 추가뷰에서 이 뷰를 어떻게 구현해야할지 갈피를 못잡앗었는데, 이번 앱을 구현하면서 이 기능이 Tag List임을 알게됐다. 이 Tag List를 구현하는데 UICollectionViewFlowLayout를 사용했다. UICollectionViewFlowLayout를 상속시켜 LeftAlignedCollectionViewFlowLayout 클래스를 생성했다. 이 클래스는 컬렉션 뷰 아이템들을 왼쪽 정렬로 배치하는 레이아웃을 구현했다. 레이아웃 속성을 반환하는 layoutAttributesForElements(in:) 메서드를 오버라..

개발일지/알러지키미

[개발일지/알러지키미] #4. 절대 다시 잊지못할 .gitignore 처리하기

Iteration 2 中 2일 차 3월 12일 (화) 깃이그노어 이슈 발생 코코아팟을 추가하는 과정에서 Pods/ 이랑 *.xcworkspace 를 gitignore에서 적용시키려고 했다. 그런데 계속 적용이 안되고 있었다. # Pods/ 이렇게 있는 형태에서 #만 지우고 ( 공백 )Pods/ 이렇게 해서 적용이 안돼었던 것이다.... 그 결과는 이렇다....ㄱ- 이후 멘토님의 도움을 받아 과거 커밋 이력을 건드려 깃이그노어 처리와 쌓인 나의 바보 같은 잘못들을 지운 상태로 다시 작업을 할 수 있었다.... 깔끔해진 파일트리와 깃 내역을 보니 오늘의 일로하여금 깃 이그노어 처리 상황에서 다시는 실수를 안하겠다고 다짐했다. 정말로!!!!!!!!!!!! 그리고 이전에는 Xcode 내부의 commit & pu..

개발일지/알러지키미

[개발일지/알러지키미] #3. 네이버 지도 API 추가하기

3월 10일 (일) 지도를 사용하는 뷰에서 기본 맵킷 말고 네이버 지도 API를 사용하기로 했다. 네이버 지도 API는 CocoaPods으로 설치해야했다. 이전까지 불러온 라이브러리는 모두 SMP로 불러올 수 있어서 처음 CocoaPods를 사용해보게 되었다. 가장 먼저 .gitignore 처리를 해주었다! 코코아팟 설치 튜토리얼과 네이버 지도 API 가이드에 따라 차근차근 문제상황을 해결해 나갔다. 네이버맵 라이브러리를 팟으로 설치 완료한 후, 테스트 파일에 맵뷰를 추가하고 실행하려는데 이런 오류가 발생했다. Build Options > User Script Sand Boxing 설정을 No로 변경한 뒤 다시 시뮬레이터를 구동하니 해결됐다! 라이브러리나 토큰 아이디를 사용할 때, 이의 보안성을 염려해 ..

개발일지/알러지키미

[개발일지/알러지키미] #2. 첫 팀 스크럼

3월 8일 (금) Iteration 1 中 2일 차 오늘은 처음 팀 스크럼을 가졌다. 오늘은 각자의 기획에 대해 소개하고 이번기간 동안 무엇을 할지 등 계획 및 한 일에 대하여 나눴다. 앞으로 출시까지 매일의 회고를 팀원과 함께 나눈다. 어제 무엇을 했는지, 오늘은 무엇을 할 건지의 계획 그리고 고민되는 점 등을 나눌 수 있다는 점에서 의미 있는 시간이다. 회의가 끝나고 문득 든 생각, 아차차! 어제 겪었던 SSL 오류에 대해 말할걸..! 회의 시간을 적극 활용하기 위해 준비를 철저히 해야겠다고 느꼈다. 오늘의 목표는 DiffableDataSource를 활용해서 검색 결과 저장 뷰 구현 (2H)이다. 그리고 남은 시간에는 부족한 기획을 점검하고 채우려 한다. 오늘 한 일 금일 학습한 modern cell..

개발일지/알러지키미

[개발일지/알러지키미] #1. 공공데이터 기관 API 테스트 및 XML 파싱

3월 7일 (목) Iteration 1 中 1일차 드디어 오늘 레포를 생성했다! 깃이그노어 처리를 시작으로 기본 셋팅을 했다. 오늘의 목표는 1. Base 설정 및 라이브러리 설치 (30M), 2. api setting (2H), 3. XML parser (3H) 이다! 공공데이터포털의 오픈 API를 이용하기 위해 데이터를 가공하고 호출 함수를 만들어 API를 테스트 해보는 데... 생각보다 잘 풀리지 않았다.. API 에러 발생 SSL 오류? API 호출 테스트를 하던 중 이런 오류를 만났다. "An SSL error has occurred and a secure connection to the server connot be made." SSL 오류가 발생하여 서버에 안전하게 연결할 수 없습니다. SS..

개발일지/알러지키미

[개발일지/알러지키미] #0. 개발일지 시작

기획 기간 중 나온 여러개의 아이디어 중에서 내가 배운 기술을 활용할 수 있을지를 고려하며 주제를 선정했다. 기획서를 작성하고 API 점검 등 필요한 기능 및 구현들을 알아보는 시간을 가졌다. Iteration 1 ~ 4 는 집중 개발 기간, Iteration 5 는 앱스토어 출시 기간, Iteration 6 ~ 7 는 QA 심사 기간 + 테스트 기간으로 설정했다. 개발 기간을 고려하여 Iteration 마다 공수산정을 하고, 이를 바탕으로 시간을 관리할 것이다. 계획대로 늘 흘러가지는 않을테니 그때그때마다 유동성있게 변경하려한다. 또한 가능한 매일매일 개발일지를 적으며 오늘 학습한 내용, 경험한 이슈, 고민되는 지점 등을 기록한다. 즉, 체크리스트보다, 개발 공수 비교 및 추후 개선을 위한 회고를 작성..

iOS/UIKit

[Swift] Localization, 앱 현지화하기 (1)

🤔 현지화가 왜 필요할까? 앱스토어는 175개의 지역에 40개의 언어로 전 세계 사용자들에게 서비스를 제공합니다. 앱을 그 나라의 문화와 언어에 적합하게 만든다면 더 많은 이용자를 유입시킬 수 있겠죠! 배포한 앱이 여러 나라의 언어를 지원한다면 각국의 사용자들의 대한 통계 및 정보들도 확인할 수 있죠! 흠... 그렇다면 그냥 언어를 번역만 하면 되잖아? . . . 라고 생각한다면 오산입니다! 언어 외에 고려해야 할 부분들이 있습니다 🌏 다양한 현지화의 예시 아랍 문화권의 RTL 대표적으로 재미있는 예시를 들어보자면, 아랍권 문화에서는 Left To Right가 아닌 Right To Left로 글을 읽습니다 별점 표시도 왼쪽에서 오른쪽으로 채우는 것이 아니라 그 반대인 오른쪽에서 왼쪽으로 채웁니다. 참 신..

iOS/UIKit

[Swift] 오픈소스 라이브러리 사용하기 (2): Kingfisher로 URL 이미지 다운로드하기

오늘은 오픈소스 라이브러리인 Kingfisher를 이용해 웹 URL 이미지를 불러와볼게요! 오픈소스 라이브러리를 이용하면 더욱 간단하고 활용성 높게 코드를 작성하고 강력한 기능들을 확장하여 사용할 수 있어요! Kingfisher란? Kingfisher는 이미지 다운로르 및 캐싱 라이브러리예요. URL을 통해 이미지를 비동기적으로 다운로드하고 캐시에 저장해 나중에 재사용할 수 있도록 도와주죠. 앱을 이용하면서 서버에서 이미지를 다운로드하고 화면에 표현하는 경우가 아주 많습니다. 이 과정에서 네트워크 연결이 느리거나 이미지를 반복해 다운로드해야 할 수 있어요. Kingfisher는 캐시를 사용해 다운로드한 이미지를 저장하여 다운로드를 더 효율적으로 처리하는데 도움을 줘요. 즉, URL로 외부 이미지(웹 이미..

iOS/UIKit

[Swift] 동적으로 셀 높이 가져오기! automaticDimension : TableViewCell의 Dynamic Height

1. 오토레이아웃 설정하기 오토레이아웃에서 heigt을 잡아버리면 적용될수없다! 주변을 여백으로 설정해야함.... 2. Label의 numberOfLines 0 3. automaticDimension

쨈미니
서우의 성장일기