본문 바로가기

전체 글

(41)
📱[RxSwift + Alamofire] API Mocking 하기 이런적 있나요,,,?😭 1. 리스트를 보여줘야하는 화면에서 아이템이 없을 경우, 하나만 있는 경우, 여러개 있는 경우 모두 다른 뷰를 보여줘야하는 뷰 코딩할 때, 뷰 확인을 위해 서버 개발자분에게 아이템 개수를 계속 바꿔달라고 하기 미안할 때! 2. 서버와 앱이 개발을 같이 시작해서 API가 나오지 않았는데, API를 연동해서 결과를 보고싶을 때! 3. API데이터에 대한 예외케이스를 처리하고싶을 때 저는 프로젝트를 진행하면서 이러한 경우를 너무 자주 마주했던 것 같았는데,,, 뉴비인 나녀석은 Mocking이란 것을 알기 전까지는 그저 API가 나오기 전까지 대기를 타거나,,, API를 그냥 받았다고 가정하고(실제로는 API 통신을 하지 않고)코딩하기,,, 이렇게 멍청하게 진행을 했었는데요. Mockin..
📱Swift Struct vs Class : Class 안에 Struct가 있으면 어떻게 복사될까 취업 준비를 하거나 이직 준비를 하면서 가장 많이 찾아본 면접 질문 중 하나는 "Struct와 Class의 차이를 설명해주세요." 라는 것이였습니다. 기본적으로 Struct는 call by value이고 Class는 call by reference라는 것은 조금만 찾아봐도 쉽게 발견할 수 있어서 면접에서 손쉽게 말할 수 있었습니다. 그런데 추가 질문으로 Class 안에 변수로 Struct가 있거나 Struct안에 class가 변수로 있으면 어떻게 될까요? 라는 질문을 받았을 때에는 너무 혼란스러웠습니다..ㅋㅋ 당시에 대답을 제대로 하지 못하고 나왔었지만.. 나와서 궁금해서 한번 해봤습니다. Class안에 Struct가 있는 경우 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ..
📱Google sheet를 사용해서 iOS 문자열을 관리해보자! 일반적으로 iOS에서 문자열 관리는 .strings 파일을 통해 관리를 하고 있다고 생각하고 있습니다. 하지만 프로젝트 디렉토리 안에 파일로 존재한다면 앱 내부의 문자열 수정은 반드시 개발자의 손을 타게 되는 것 같습니다. 문자열을 프로젝트 내부가 아닌 Google Spread sheet로 추출해서 관리할 수 있다면 기획자, 디자이너 혹은 프로젝트에 참여중인 다른 멤버들의 문자열 접근이 손쉬워지고 개발자는 잔 작업을 줄일 수 있습니다. 사실 개발 중간 들어오는 간단한 문자열 수정이 들어오면 물론 손쉽게 변경할 순 있겠지만.. 개발 흐름을 깰 경우도 많이 있는 것 같아요.. 흐름 깨는 일이 없다면 개발자는 개발에 좀 더 집중을 할 수도 있을 것 같다는 생각이 들어서 문자열 파일을 Google Sheet로 ..
📱RxSwift + MVVM 패턴 iOS에 적용해보기 (간단한 로그인 화면) 완성 화면 이메일칸과 비밀번호를 모두 입력하게되면 로그인 버튼이 활성화되는 화면입니다! 두 칸 중 하나라도 비어있으면 버튼이 비활성화됩니다. MVVM패턴 MVVM은 Model, View, ViewModel을 말합니다. GUI의 개발을 3가지 역할로 나누어 개발을 하는 것을 의미합니다. View는 우리가 흔히 알고있는 UIView 화면에 해당합니다. Model도 MVC패턴에 있는 Model과 동일합니다. ViewModel은 View와 Model 사이에 연결다리 역할을 해줍니다. 뷰에서 보여지는 데이터들을 가지고 있으며 이와 관련된 비즈니스 로직들도 포함되어있습니다. 장점 View와 ViewModel 사이, ViewModel과 Model 사이에 의존성이 없어서 ViewModel을 UnitTest하기 수월해집..
📱Github action을 사용해서 iOS프로젝트 자동으로 테스트시키기 요즘에 주변 사람들이 한번씩 사용해보면서 괜찮다면서 한번 사용해보라는 녀석이 있는데요! 바로 Github Action입니다. 자신이 진행하고있는 프로젝트 깃허브 레포에 들어가게되면 상단에 있는 탭중에 Actions라는 탭이 보일겁니다. 자동화 도구인 CI/CD툴을 깃허브에서도 제공해주는겁니다. GitHub Actions GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the w..
📱iOS 인스타그램 API로 내 포스트 가져오기 (Alamofire API) 인스타 API를 사용해 내 포스트(사진, 동영상) 가져오기 Facebook에서 제공하는 Instagram API를 사용해 내 프로필에 있는 포스트들을 가져올 수 있습니다. 포스트들을 조회하기 위한 순서는 다음과 같습니다. 1. Instagram 로그인을 통해 인증코드 가져오기 2. 인증코드를 Instagram 액세스 토큰으로 교환 3. Instagram 사용자의 이미지, 동영상 및 사진첩 가져오기 로그인 하면 한번에 액세스토큰을 주는게 일반적이라고 생각하는데, Instagram에서는 총 두번의 API호출을 해야 포스트를 조회할 수 있는 액세스 토큰을 얻을 수 있습니다. 이 포스트에서의 설명은 1번과정에 대한 설명이 진행됩니다. (앱에서 작업을 시작하기 전 페이스북, 인스타그램 프로젝트 설정에 대한 설명입..
📱도로명주소 API로 사용해보는 간단 Alamofire구현 (iOS API통신) 대부분 RESTful API통신을 소개하기위해서 GithubAPI를 예제로 활용하여 소개하지만 이 포스트에서는 도로명 주소 API를 사용하도록 하겠습니다. (진행중인 프로젝트에 마침 도로명 주소 API를 사용하기 때문입니다...ㅋㅋㅋㅋ) Alamofire를 사용해 구현해볼 화면은 간단하게 키워드를 입력받아 검색하면 가장 처음 나타나는 주소 하나만 Label로 출력해주는 화면입니다. 1. 도로명주소 API key 발급 도로명 주소 API를 사용하기 위해서는 도로명주소 API 홈페이지에 들어가서 사용신청을 먼저 해야합니다. API 신청하기 | 오픈API | 도로명주소 개발자센터 www.juso.go.kr 위 링크로 접속하게 되면 바로 신청할 수 있습니다! 이번에 사용해야할 API는 "도로명주소 API"에서 ..
📱iOS Stretchy header 오토 레이아웃으로 구현하기 (Snapkit) 새련된 느낌의 UI를 보여주는 Stretchy header입니다. 스크롤뷰를 아래쪽으로 당길수록 제일 위에있는 이미지가 늘어나는 뷰 입니다. Snapkit을 사용한 간단한 오토레이아웃의 설정만으로 Stretchy header를 구현합시다. (Snapkit을 사용하기 때문에 스토리보드 없이 UI를 그립니다.) (아래에서 나타날 코드들은 위 예시의 간단버전입니다.) 화면 구성도 완성된 화면을 보았을때 스크롤이 되면서 UIImage가 늘어나기때문에 UIScrollView 안에 UIImage가 들어있을거라 생각했었는데 사실은 UIScrollView와 UIImageView는 같은 레이어에 위치시켜야합니다. 1️⃣UIImageView의 top은 스크롤 뷰와 함께 스크롤 되는것이 아니라 최상위 뷰의 top에 고정되어..