728x90

전체 글 80

패스트캠퍼스 챌린지 15일차

2월 7일 월요일 / 15일 차 CH01 spotify 스타일 로그인 화면 구현하기 내용 요약 Backend(Server) - Frontend(Client) 데이터 흐름 - 로그인 데이터 흐름 : Frontend에서 ID, Password auth request를 전달하면 Backend에서 Certificate key를 전달하는 흐름 Firebase : Frontend 개발에 필요한 여러 플랫폼을 제공하는 서비스 OAuth - 사용자 인증 방식에 대한 업계 표준 - ID/PW를 노출하지 않고 OAuth를 사용하는 업체의 API 접근 권한을 위임 받음 - 기본 개념 1. User Service Provider에 계정을 가지고 있는 사용자 2. Consumer Service Provider의 API (제공..

패스트캠퍼스 챌린지 14일차

2월 6일 일요일 / 14일 차 CH08 코로나 현황판 앱 만들기 내용 요약 기능 상세 - 시도별 신규 확진자 수가 파이 차트로 표시되어야 한다 - 도시 항목을 선택하면 상세 현황을 볼 수 있는 화면으로 이동되어야 한다 활용 기술 - 굿바이 코로나 19 API - Alamofire - Cocoapods Alamofire : Swift 기반의 HTTP 네트워킹 라이브러리 - 연결 가능한 리퀘스트 리스폰스 메서드를 제공 - URL JSON 형태의 파라미터 인코딩을 지원 - 파일 데이터 스트링, 멀티 파트 폼 데이터 등 업로드 기능을 제공 - HTTP 리스폰스 검증과 광범위한 단위 테스트 및 통합 테스트를 보장 URLSession 대신 Alamofire을 사용하는 이유 - 코드의 간소화, 가독성 측면에서 도움..

애플 M1 환경에서 cocoapod을 통한 pod install 실패

pod install 오류 해결방법 [IMPORTANT] Don't forget to include the Crash Report log file under DiagnosticReports directory in bug reports. 맥북 에어 M1으로 앱 개발 실습을 진행하는 중에 cocoapod으로 Alamofire와 Chart를 설치 시 오류가 발생했다. 강의와는 달리 오류가 나는 걸 보고 직감적으로 M1의 환경문제인걸 알아채고 곧바로 구글링에 들어갔다.. 다음 내용은 구글링을 통해 찾은 해결 방법이다. Ruby FFI 라이브러리 업데이트 후 재설치 ffi를 설치할 때 아키텍처를 x86_64로 지정하여 설치하는 방식 (M1은 arm 기반이라 arch 명령을 수행 시 arm64라고 나옴) % sud..

Xcode 2022.02.06

패스트캠퍼스 챌린지 13일차

2월 5일 토요일 / 13일 차 CH07 날씨 앱 만들기 내용 요약 기능 상세 - 도시 이름을 입력하면 현재 날씨 정보를 가져와 화면에 표시되게 만듬 - 도시 이름을 잘못 입력하면 서버로부터 응답받은 에러 메시지가 알럿으로 표시 됨 활용 기술 - Current Weather API - URLSession 웹 통신과 Protocol - 인터넷 상에서의 통신을 말한다 - 많은 정보들이 주고 받기에 인터넷에는 엄격한 규약이 존재한다.(이것을 Protocol 이라고 부른다) - HTTP(Hyper Text Transfer Protocol) : Hyper Text를 전송하기 위한 프로토콜 ㄴ Http 통신 : 요청과 응답으로 이루어짐(Client, Web Server) ㄴ Http 패킷 : Header와 Body..

패스트캠퍼스 챌린지 12일차

2월 4일 금요일 / 12일 차 CH06 뽀모도로 타이머 앱 만들기 내용 요약 기능 상세 - DatePicker를 통해 타이머 시간을 설정할 수 있다. - 시작 버튼을 누르면 타이머가 시작되고 일시 정지를 누르면 타이머가 일시 정지 된다. - 취소 버튼을 누르면 타이머가 종료된다. - 카운트 다운이 완료되면 알람이 울린다 활용 기술 - DispatchSourceTimer(GCD API) ㄴ 특정 시간이 지난 후에 이벤트를 발생시킨다 ㄴ 반복적인 주기로 특정 작업을 수행한다 - UIView Animation 중요 코드 //시간 계산 방법 let hour = self.currentSeconds / 3600 let minutes = (self.currentSeconds % 3600) / 60 let secon..

패스트캠퍼스 챌린지 11일차

2월 3일 목요일 / 11일 차 CH05 일기 앱 만들기 - 즐겨찾기, 에러 처리 내용 요약 Notification NotificationCenter 를 통해 정보를 저장하기 위한 구조체입니다. NotificationCenter 등록된 observer 에게 동시에 notification 을 전달하는 클래스 NotificationCenter 는 notification 을 발송하면 NotificationCenter에서 메세지를 전달한 observer를 처리할 때까지 대기함 (흐름이 동기적으로 흘러감) - addObserver : 관찰자를 대기시킴 - selector : 관찰자가 수행해야 할 업무를 의미 Ex) NotificationCenter.default.addObserver( self, selector:..

패스트캠퍼스 챌린지 10일차

2월 2일 수요일 / 10일 차 CH05 일기 앱 만들기 - 일기 삭제, 수정 주요 코드 //일기 수정 버튼 @IBAction func tapEditButton(_ sender: UIButton) { guard let viewController = self.storyboard?.instantiateViewController(identifier: "WriteDiaryViewController") as? WriteDiaryViewController else { return } guard let indexPath = self.indexPath else { return } guard let diary = self.diary else { return } viewController.diaryEditorMode = ..

패스트캠퍼스 챌린지 9일차

2월 1일 화요일 / 9일 차 CH05 일기 앱 만들기 - 일기 작성 기능 구현 내용 요약 UItabBarController - 다중 선택 인터페이스를 관리하는 컨테이너 뷰 컨트롤러로, 선택에 따라 어떤 자식 뷰 컨트롤러를 보여줄 것인지가 결정 UICollectionView - 데이터 항목의 정렬된 컬렉션을 관리하고 커스텀한 레이아웃을 사용해 표시하는 객체 ㄴ UICollectionViewLayout - 아이템 배치 및 시각적 스타일 결정 ㄴ UICollectionViewFlowLayout - 항목들을 정렬 - Flow 레이아웃 객체를 작성하고 컬렉션 뷰에 이를 할당한다 - 셀의 width, height 를 정한다 (반드시 지정해줘야 함) - 필요한 경우 셀들 간의 좌우 최소 간격, 위아래 최소 간격을 ..

패스트캠퍼스 챌린지 8일차

1월 31일 월요일 / 8일 차 CH04 To-Do List 앱 만들기 내용 요약 UITableView - 여러 개의 Cell을 가지고 있고 하나의 열과 여러줄의 행을 지니고 있으며, 수직으로만 스크롤 가능합니다 - 섹션을 이용해 행을 그룹화하여 콘텐츠를 좀 더 쉽게 탐색할 수 있다 - 섹션의 헤더와 푸터에 View를 구성하여 추가적인 정보를 표시할 수 있다 Delegate : 테이블뷰의 동작과 외관을 담당 DataSource : 데이터를 받아 뷰를 그려주는 역할 UITableViewDataSource : 테이블 뷰를 생성하고 수정하는데 필요한 정보를 테이블 뷰 객체에 제공 UITableViewDelegate : 테이블뷰의 시각적인 부분을 설정하고, 행의 액션 관리, 액세서리 뷰 지원 그리고 테이블 뷰의..

맥, Xcode 단축키

기본적인 맥 단축키 커맨드 + A : 전체 선택 커맨드 + Z : 되돌리기 커맨드 + X : 자르기 커맨드 + C : 복사 커맨드 + V : 붙여 넣기 커맨드 + BackSpace : 해당 라인 지우기 커맨드 + 방향키 : 해당 방향의 끝으로 이동 커맨드 + Up : 해당 창 가장 위로 = Home 키도 동일하게 작동합니다. 커맨드 + Down : 해당 창 가장 아래로 = End 키도 동일하게 작동합니다. 커맨드 + Left : 선택된 텍스트 라인 가장 왼쪽으로 커맨드 + Right : 선택된 텍스트 라인 가장 오른쪽으로 컨트롤 + 좌/우 : 페이지 변경 커맨드 + Shift + 4 : 선택한 화면 영역 캡처 커맨드 + Space : 언어 변환 커맨드 + Space, 커맨드 누른 채로 Space 연타 시..

Xcode 2022.01.31

패스트캠퍼스 챌린지 7일차

1월 30일 일요일 / 7일 차 CH03 계산기 앱 만들기 내용 요약 UIStackView - 열 또는 행에 View 들의 묶음을 배치할 수 있는 간소화된 인터페이스 (Auto Layout을 이용하여 디바이스의 스크린 사이즈나 일어난 어떠한 변화에 맞춰서 동적의 UI를 구성할 수 있다.) 오토 레이아웃 제약조건을 많이 설정하지 않아도 쉽게 UI 구성이 가능함 Stack View 의 속성 - Axis : Stack View 의 방향을 결정 (가로 또는 세로) ㄴ Vertical Stack View - subView들이 세로방향으로 추가됨 ㄴ Horizontal Stack View - subView들이 가로방향으로 추가됨 - Alignment : StackView의 subView 들을 어떤식으로 정렬할지 결..

패스트캠퍼스 챌린지 6일차

1월 29일 토요일 / 6일 차 CH02 LED 전광판 앱 만들기 내용 요약 Content View Controller - 화면을 구성하는 뷰를 직접 구현하고 관련된 이벤트를 처리하는 뷰 컨트롤러 Container View Controller - 하나 이상의 Child View Controller 를 가지고 있다 - 하나 이상의 Chile View Controller 를 관리하고 레이아웃과 화면 전환을 담당한다 - 화면 구성과 이벤트 관리는 Chile View Controller 에서 한다 - Container View Controller 는 대표적으로 Navigation Controller 와 TabBar Controller 가 있다. UINavigation Controller - 계층구조로 구성된 c..

패스트캠퍼스 챌린지 5일차

1월 28일 금요일 / 5일 차 CH01 명언 생성기 앱 만들기 내용 요약 Cocoa touch Framework - iOS 개발환경을 구축하기 위한 최상위 프레임워크(가장 많이 사용되는 것은 UIkit, Foundation) MVC패턴 (간단한 앱을 개발할때 유용) UIKit - 사용자의 인터페이스를 관리하고, 이벤트를 처리하는것이 주목적인 프레임워크 UIView - 화면의 직사각형 영역에 대한 내용을 관리하는 개체 ViewController - 앱의 근간을 이루는 객체로 모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다 - 데이터 변화에 따라서 view 컨텐츠를 업데이트 - view들과 함께 사용자 상호작용에 응답 - view를 리사이징하고 전체적인 인터페이스의 레이아웃 관리 - 다른 뷰컨트롤..

패스트캠퍼스 챌린지 4일차

1월 27일 목요일 / 4일 차 CH01 21. 익스텐션 22. 열거형 23. 옵셔널 체이닝 24. try-catch 25. 클로저 26. 고차함수 익스텐션 기존의 클래스, 구조체, 열거형, 프로토콜에 새로운 기능을 추가하는 기능 중요 내용 예시 코드 익스텐션이 타입에 추가할 수 있는 기능 - 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 - 타입 메서드 / 인스턴스 메서드 - 이니셜라이저 - 서브스크립트 - 중첩 타입 - 특정 프로토콜을 준수할 수 있도록 기능 추가 새로운 기능을 추가할 수는 있지만 기존에 존재하는 기능을 오버라이드 할 순 없다 extension SomeType { 추가기능 } extension Int { var isEven: Bool { return self % 2 == 0 } var..

패스트캠퍼스 챌린지 3일차

1월 26일 수요일 / 3일 차 CH01 14. 초기화 구문 init 15. 프로퍼티 16. 클래스와 구조체의 차이 17. 상속 18. 타입 캐스팅 19. assert와 guard 20. 프로토콜 초기화 구문 init 클래스 구조체 또는 열거형의 인스턴스를 사용하기 위한 준비과정 init(매개변수: 타입, ...) { 프로퍼티 초기화 인스턴스 생성시 필요한 설정을 해주는 코드 작성 } 프로퍼티 클래스, 구조체 또는 열거형 등에 관련된 값을 뜻함 - 저장 프로퍼티 - 연산 프로퍼티 - 타입 프로퍼티 클래스와 구조체 클래스와 구조체의 공통점 클래스와 구조체의 차이점 - 값을 저장할 프로퍼티를 선언할 수 있다 - 함수적 기능을 하는 메서드를 선언할 수 있다 - 내부 값에 . 을 사용하여 접근할 수 있다 - 생..

패스트캠퍼스 챌린지 2일차

1월 25일 화요일 / 2일 차 CH01 07. 함수 사용법 08. 조건문 09. 반복문 10. 옵셔널 11. 옵셔널 바인딩 12. 구조체 13. 클래스 함수 작업의 가장 작은 단위이자 코드의 집합 func 함수명 (파라미터 이름: 데이터 타입) -> 반환타입 { return 반환 값 } ※ 와일드카드 식별자를 사용하면 전달 인자 레이블을 사용하지 않는 함수를 구현할 수 있다. Ex) func sendMessage (_ name: String) -> String 스위프트는 함수에서 몇 개의 매개변수가 들어올지 모를 때 가변 매개 변수를 사용할 수 있다. (0개 이상) 가변 매개 변수를 통해 들어온 인자 값은 배열처럼 사용 가능하다 함수마다 가변 매개 변수는 하나씩 가질 수 있다. ※ 매개 변수 데이터 타..

패스트캠퍼스 챌린지 1일차

아이폰 앱 개발자가 되고자 준비하기로 마음을 먹고 간단한 책 두 권 정도를 구매하여 공부하다 보니 실무와 관련된 내용을 공부하고 싶어져 관련 강의를 알아보게 되었고 구글링을 통해 우연히 패스트캠퍼스 사이트를 발견하게 되었습니다 분야별로 여러 강의들이 준비되어 있었지만 '30개 프로젝트로 배우는 iOS 앱 개발' 강좌가 찾고 있던 구성과 가장 유사하였으며, 50일간 진행되는 환급 챌린지에 흥미를 느껴 고민 없이 신청하게 되었습니다 막상 글 작성을 시작하려니 내 생각을 블로그에 적는 것도 어색하고 한편으론 완벽하게 해낼 수 있을까 걱정도 되지만 좋은 취지로 참여하게 되었으므로 챌린지가 진행되는 동안 최선을 다해 기록해 보겠습니다 앞으로 글 작성 방식은 공부한 목차, 공부한 내용 요약 정리, 진행이 잘 되지 ..

인수인계 앱 구현 계획

인수인계 앱 개발 프로젝트 구상하게 된 계기 20살 때부터 꾸준히 여러 알바를 경험하면서 항상 인수인계 앱이 있었으면 좋겠다고 생각했지만 앱 스토어에 등록된 앱이 없는 것을 깨닫고 언젠간 내가 직접 개발해야겠다고 생각했습니다. 개발이 필요한 가장 큰 이유 중 하나는 대다수의 사업장이 인수인계를 구두로 하다 보니, 전달사항이 많을 경우 잘못된 의사소통으로 인해 착오가 발생할 수 있으며, 기억을 못 하는 경우도 생겨 종종 문제가 생기곤 했습니다. 근무자 간의 유일한 소통 창구는 카카오톡 단체 톡방을 이용한 전달이지만, 카톡 내용이 쌓이면 오래된 공지사항 및 인수인계 사항, 사업장 내의 주의사항 등 중요 내용을 찾기 힘들다는 단점도 있었습니다. 따라서 모든 사업장에서 공통적으로 사용할 수 있으며 손쉽게 전달사..

앱 개발 2022.01.22

[Swift] 프로퍼티 - 지연 저장 프로퍼티

프로퍼티 클래스, 구조체 또는 열거형 등에 관련된 값 저장 프로퍼티 : 인스턴스의 변수 또는 상수 (클래스, 구조체에서만 사용) 연산 프로퍼티 : 값을 저장한 것이 아닌 특정 연산을 실행한 결괏값 (클래스, 구조체, 열거형에서 사용) 타입 프로퍼티 : 특정 타입에 사용 프로퍼티 감시자 : 프로퍼티의 값이 변할 때 변화에 따른 특정 작업을 실행 (저장 프로퍼티에 적용, 부모 클래스로부터 상속 가능) 지연 저장 프로퍼티 필요할 때 값이 할당됨 lazy (지연 저장 프로퍼티) var 키워드를 사용하여 변수로 정의함 (상수(let)는 인스턴스가 완전히 생성되기 전에 초기화해야 하므로 필요할 때 값을 할당하는 지연 저장 프로퍼티와는 맞지 않기 때문에) 복잡한 클래스나 구조체를 구현할 때 많이 사용됨 지연 저장 ..

Swift 2022.01.22

[Swift] 프로퍼티 - 저장 프로퍼티

프로퍼티 클래스, 구조체 또는 열거형 등에 관련된 값 저장 프로퍼티 : 인스턴스의 변수 또는 상수 (클래스, 구조체에서만 사용) 연산 프로퍼티 : 값을 저장한 것이 아닌 특정 연산을 실행한 결괏값 (클래스, 구조체, 열거형에서 사용) 타입 프로퍼티 : 특정 타입에 사용 프로퍼티 감시자 : 프로퍼티의 값이 변할 때 변화에 따른 특정 작업을 실행 (저장 프로퍼티에 적용, 부모 클래스로부터 상속 가능) 저장 프로퍼티 정의할 때 기본값과 초깃값 지정 가능 var (변수 저장 프로퍼티) let (상수 저장 프로퍼티) 구조체에서 저장 프로퍼티는 옵셔널이 아니더라도, 구조체는 저장 프로퍼티를 모두 포함하는 이니셜라이즈를 자동으로 생성한다 클래스에서 저장 프로퍼티는 옵셔널이 아니라면 프로퍼티의 기본값을 지정해주거나 사..

Swift 2022.01.22
728x90