Hash란?데이터를 관리, 유지하는 자료구조로 데이터들을 해시 함수를 통해 key로 분류하고, 그 key에 따라 value를 저장하는 형태를 뜻한다. HashTable이란 Key를 이용해 배열의 Index를 찾고, 그 인덱스를 통해 값을 가져온다. "제리"의 영어 이름을 찾기 위해1. "제리"라는 key를 hash 함수에 전달한다2. hash 함수 내에 hash함수를 통해 찾을 value의 인덱스를 찾는다.3. 찾은 인덱스를 통해 value값 "jarry"를 얻는다. Hashable이란?https://developer.apple.com/documentation/swift/hashable Hashable | Apple Developer DocumentationA type that can be hashe..
UIAlertAction을 사용하면서 어떤 버튼을 눌렀을 때 UIAlertAction을 그 함수 내에서 설정하여 addAction()하는 경우로만 사용했었는데 필요한 Actions를 미리 프로퍼티로 저장해둔 후 추후 미리 만들어둔 UIAlertAction을 전달하여 UIAlertController로 띄우는 방법을 사용해보게 되었다. var myActions: [UIAlertAction] = [] 먼저 내가 저장할 액션 배열을 클래스 내 프로퍼티로 미리 선언해둔다. private func setupAlertActions() { let action1 = UIAlertAction(title: "action1", style: .default, handler: { _ in print("select action1"..
나는 새로운 개념을 접할 때 뭔가 이걸 사용해서 어떤 문제를 해결하는데 도움이 되고, 왜 사용하는지를 체감했을 때 그 개념을 완전히 받아들일 수 있는 것 같다. 뭔가 내가 이 개념의 필요성을 온전히 느끼지 못하면 사용을 하면서도 마음 한켠에 의문이 작게 자리잡는 것 같다. 그래도 협업을 하고 일을 하기 위해서는 내가 마음으로 완전히 받아들이지 않았음에도 그게 무엇인지 알고 빠르게 받아들일 수 있는 준비는 되어있어야 하는게 맞다고는 생각한다.(근데 그렇게 안했음ㅋㅜ) 이번에 Coordinator Pattern을 처음 공부하게 되었다. 예전에 다른 프로젝트를 통해 개념을 접한 적은 있었지만 그때는 실력이 부족해서 인가 필요성을 온전히 느끼지 못했다. 왜 그랬는지 생각해보면 너무 작은 프로젝트에 이 개념을 ..
자주 사용되는 Operator인데 생각해보니 차이점을 명확하게 이해한 후 사용하지 않고 그때그때 찾아서 사용했었어서 이번 기회에 명확히 개념을 정리하고자 한다. Merge 여러 Observable이 방출하는 항목들을 하나의 Observable이 방출하도록 병합한다. 마블 다이어그램과 같이 첫번째 스트림과 두번째 스트림을 합쳐 하나의 스트림으로 만들어준다. 이때 첫번째 스트림, 두번째 스트림에 이벤트가 발생할 때 마다 바로바로 이벤트를 방출한다. 단순히 두 스트림의 이벤트를 하나로 합하기 때문에 스트림을 구별 할 수는 없다. let firstSubject = BehaviorSubject(value: 1) let secondSubject = BehaviorSubject(value: 2) let thirdSu..
클린코드 독후감 .. :) 더보기 클린코드를 읽고 더 좋은 코드에 관심이 생기게 되었다. 기존 개발 방식은 구현을 위주로 고민을 하였는데, 클린코드에 나온 내용을 내 프로젝트에 직접 적용해보는 과정을 통해 더 좋은 코드를 작성하고 싶다는 고민을 하게 되었다. 클린코드에 나와있는 내용들이 전부 다 맞는 말이라고 생각하지 않는다. 상황에 따라 좋지 못한 방법, 비효율적인 방법이 효율적일 수 있고, 효율적인, 다른사람들이 선호하는 그런 방식들이 비효율적일 수 있다. 예를들어 어떤 러닝커브가 높은 아키텍처를 도입하기 위해 팀원들이 많은 시간과 노력을 소비해야 한다면, 그런데 이 때 프로젝트 기한이 짧다면 과연 그 아키텍처를 도입하는게 올바른 선택일까? 현재의 나는 올바르지 않다고 생각한다. 좋은 아키텍처, 고민..
예전에도 Pagination은 해 본 경험이 몇 번 있었지만 뭔가 아직 개념이 명확하게 잡히지 않았다는 생각에 뚱땅뚱땅 Pagination 실습을 진행하게 되었다. 내가 정의한 기능은 다음과 같다. (출처 내 머리) 1. 텍스트 필트에 텍스트를 한 글자 입력할 때 마다 결과가 로드된다. 2. 입력 텍스트가 변경되면 데이터를 다시 받아온다. 3. UI는 image가 한줄에 3개씩, API 1회 호출 시 데이터가 20개씩 추가된다. 4. 가장 아래로 스크롤 하면 다음 결과를 불러온다. 5. 이미지는 캐싱처리되어 이후 필요할 경우 캐싱된 데이터를 사용한다. 사용한 라이브러리는 Moya로 Api 호출을 하고, Kingfisher로 이미지 로드와 캐싱을 처리했다. 실습에는 Kakao Search Image API..
데이터를 저장하는 방법에는 UserDefaults, CoreData, Keychain... 등 여러가지 방법이 있다. 그러나 데이터의 종류가 다양하기 때문에 각각의 방법들의 쓰임새가 다른데 많고 많은 방법 중 키체인 방식에 대해 알아보고자 한다. Keychain(키체인)이란? https://developer.apple.com/documentation/security/keychain_services Keychain Services | Apple Developer Documentation Securely store small chunks of data on behalf of the user. developer.apple.com 애플 공식 문서에 따르면 안전하게 저장해야하는 작은 데이터를 저장할 때 사용한다고..