본문 바로가기

전체 글

[내용정리] Swift - JsonArray와 JsonObject의 차이 API서버에서 데이터를 가져오는 과정에서 JsonArray의 JsonObject 형태로 데이터를 내려받는것을 알게되었다. 둘의 차이는 무엇일까? 우선 Json은 key와 value로 이루어진 데이터의 집합이다. swift의 dictionary와 비슷하게 둘의 사이를 : 로 구분짓는다. 예를들어 name이라는 key안에 Daesung이라는 value(값)이 저장 되는것이다. "name" : "Daesung" 데이터가 조금더 많다면 어떻게 될까? 학생들을 Json으로 만들어보자 name age gender 홍길동 12 man 김장미 11 woman 김콩콩 16 man 위 데이터를 JsonArray로 나타내어 본다. 배열답게 [대괄호]를 활용하여 모든 데이터를 정리하였다. 물론 접근도 index의 순서에 맞게.. 더보기
[내용정리] Swift - closure(클로저)란? (1/2) swift에서 정말 많이 쓴다는 클로저, 정리가 안되어 다시한번 정리 해본다. 클로저의 기본형태 { (매개변수 목록) -> 반환타입 in // 실행될 코드 } 1급 객체함수, Unnamed Closure 등 여러가지의 특성을 갖고 있다. 1급 객체란? 전달인자를 전달가능 동적 프로퍼티에 할당 가능 변수나 데이터구조안에 담을수 있음 반환값으로 사용가능 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별가능 어?, 그렇다면 클로저가 Unnamed Closure라면 반대로 named Closure도 존재하겠네? 우리가 알고있는 함수가 바로 이름을 갖고 있는 named Closure인것 (hello 라는 이름을 갖고 있다) 하지만 우리는 함수라고 칭하고 있다 func hello() { print("나는 nam.. 더보기
[내용정리] Git - pull이후 이전으로 복구 하는법 팀원들과 협업을 하다가 main에 있는것을 pull 받아왔더니 오류가 생겼다.. 내가 commit했던 시점으로 돌아가면 될것이다 한가지 주의할점은 단순히 로컬에 command+s 저장시점으로 돌아가지 못하고 commit했던 시점으로 돌아갈수있다. 개인 branch에 commit 과 push를 생활화하라는것이 이런 이유인것같다. 우선 터미널로 해당branch로 이동한 후 git log 하게되면 상단부터 최신순으로 본인이 commit했던 이력이 노출될것이다. commit 4d7eeccd595983d0389b4fd51231dfv Author: YoonDaeSung Date: Fri Jan 28 16:30:48 2022 +0900 바텀 달력 UI수정 commit ac1a521231d1fbz86d7b213213d.. 더보기
[내용정리] Swift - UITableVIew Delegate, DataSource 종류 UITableViewDataSource - 테이블 뷰 생성, 데이터를 받아 view를 그려주는 역할 numberOfRowsInSection: 나타낼 cell의 갯수 정의 - 필수 cellForRowAt: cell을 어떤식으로 나타낼건지 (어떤 데이터를 활용하여 나타낼것인지) - 필수 numberOfSections: 총 섹션의 갯수 정의 titleForHeaderInSection: 특정 섹션의 헤더 타이틀 정의 titleForFooterInSection: 특정 섹션의 풋터 타이틀 정의 canEditRowAt: 특정 위치의 행의 편집 가능여부 정의 canMoveRowAt: 특정 위치의 행을 터치로 재정렬 가능여부 정의 true로 반환시에 편집모드 들어갈경우 행의 위치를 사용자 마음대로 변경할 수 있음 mov.. 더보기
[내용정리] Swift - 코드로(Programmatically) 검색기능 구현 구현할 SearchView는 한글자 한글자 입력시마다 해당 키워드와 같은 키워드인 문자들을 호출한다. 현재 스터디로 UI개발을 코드베이스로 하고있어 스토리보드는 클래스와의 연결용으로 사용중이다. 1. Main 스토리보드에 VC를 하나 만들어준다. 이후 구현하게될 클래스명을 SearchViewController로 칭하게될 예정이여서 클래스명을 동일하게 설정해둔다. 2. 만들어 놓은 SeachViewController를 Navigation Controller에 Embed 해준다 우리는 navigationItem에 searchBar를 넣어줄거기 때문에 Embed를 미리 해주어야 한다. 3. Model을 따로 구조체로 만들어준다 모델은 데이터이므로 배열에 검색시에 나올데이터에 정의를 해두었다.( 추후 API통신.. 더보기
[내용정리] Swift - URLSession 이란? 앱을 만드는 도중에 서버와 통신하기위해 알아보던중에 URLSession이란것에 대해 학습 필요성을 느꼈다.. URLSession은 ios앱에서 서버와 통신하기위한 애플에서 제공해주는 API이다. HTTP를 포함하여 프로토콜 및 인증, 쿠키, 캐시관리 등을 지원한다. URLSession은 우선 다른통신과의 마찬가지로 기본구조는 Request, Response구조를 띄고 있다. Request의 두가지 방법 1. URL 객체를 통해 직접 통신하는 방법 2. URLRequest객체를 따로 만들어서 옵션을 지정해줘서 설정하는 통신하는 방법 여기서는 어떤설정이 이뤄저야해? 서버로 요청 보낼시에 어떻게 데이터를 캐싱할지, 어떤 HTTP 메소드(Get, Post 등)를 사용할것인지를 설정 Response의 두가지 방법.. 더보기
[오류처리] Swift - ProjectName[40970:1381908] [Assert] negative or zero item sizes are not supported in the flow layout TravelManagePlanner[40970:1381908] [Assert] negative or zero item sizes are not supported in the flow layout 달력을 구현하기위해 ViewController에다가 FSCalendarDataSource, FSCalendarDelegate 채택을 하고 진행중이였다.. 저말을 쉽게 얘기하면 음수 또는 0을 사용하지말라고한다. 나는 어디에도 0을 쓴적이없는데.. 우선적으로 내 목적성에 더가까운 DatePicker를 사용하면서 저오류는 없어지게 되었지만.. 오류가 발견될시에 해당프로퍼티의 레이아웃 잡는 부분(위의 이미지)을 건드려보니 해당오류가 없어젔다. FSCalendar를 쓰지않게되어서 디테일한 오류해결법은 공유를 못드리겠다.. 더보기
[오류처리] Swift - Fatal error: Expected superview but found nil when attempting make constraint `equalToSuperview` 뷰를 그리기위해 생성된 프로퍼티 lazy var test : UILabel = { let test = UILabel() return test }() 이후 레이아웃 까지 잡아놓고 해당 프로퍼티를 viewDidLoad() 함수에 view.addSubView(test) 해주면 끝 왜 선안한 프로퍼티를 레이아웃에만 잡아주고 화면에 안집어넣었어?, 결국 화면에 넣어주는것은 addSubView 더보기