목록Swift (29)
Weekoding
웹앱이 차지하는 비중이 점점 늘고 있는 추세이다. 따라서 네트워크 통신에 대한 기본적인 개념은 아주 중요할 것이다. 📂 RESTful(Representational State Transfer) API REST : 소프트 아키텍쳐의 한 양식. HTTP 프로토콜을 활용하였기 때문에, 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일. REST는 HTTP URL을 통해 자원을 명시하고, POST / GET / PUT / DELETE를 통해 자원에 대한 CRUD를 적용한다. Client의 요청에 따라 자원을 여러 Representation으로 나타낼 수 있는데, 대부분 JSON을 통해 주고받는다. Client에서 바로 객체로 치환 가능한 형태의 데이터 통신이 가능하여, Server와 Client의 역할을 분리..
옵셔널에 대해 좀 더 명확한 개념을 갖고자 이 글을 쓰기로 계획했다. 1. 옵셔널이란? 2. 옵셔널 사용 3. 옵셔널 추출(Optional Unwrapping) - 강제 추출(Forced Unwrapping) - 옵셔널 바인딩(Optional Binding) - 암시적 추출 옵셔널(Implicitly Unwrapped Optional) 4. 심화 - 옵셔널 뜯어보기 1. 옵셔널이란? 옵셔널(Optional): '선택적인' 이라는 뜻을 가진 단어. Swift에서 값이 있을수도, 없을수도 있음을 나타내는 표현이다. 즉, 변수/상수에 값이 nil일 수도 있다(=값이 있는 것을 보장할 수 없다) 라는 의미이다. Swift의 특징 중 하나인 '안전성'을 문법으로 담보하는 기능이다. 옵셔널 변수 또는 ..
예제로 공부를 하던 중 아래와 같은 코드를 발견했다. 3개의 버튼에 각각 그림자 효과를 넣는 코드이다. 버튼 하나씩 적용하면 총 9줄인데.. 신기하게 배열로 묶고 .forEach 메소드를 사용해 단 3줄만에 3개 버튼의 동적 처리를 끝냈다. [seriesBtn, movieBtn, categoryBtn].forEach{ $0?.layer.shadowColor = UIColor.black.cgColor $0?.layer.shadowOpacity = 1.0 $0?.layer.shadowOffset = CGSize(width: 1, height: 1) } .forEach는 내장 함수일 것 같은데,,, $0는 무엇일까? 선언이 된 곳도 없었다. 찾아보니 Closure의 단축 인자라는 것을 알게 되었다. ⌘ 클로저..
앱을 만드는데 있어 고려하게 되는 부분 중 다크모드 지원 여부와, 가로모드 지원 여부가 있다. 확실히 다크모드와 가로모드를 지원하게 된다면, 파편화나 색상 문제를 고려할 것이 훨씬 많아지니 난이도가 높아지는 것 같다. 프로젝트를 생성 하면, 기본적으로 양쪽 모두를 지원하는 설정으로 되어 있다. 이를 지원하지 않는다면 어떻게 해야 하는지 한번에 간단히 알아보았다. 🔳 다크모드 설정 🔲 info.plist의 'Appearance' key값을 이용하면 된다. 기존의 UIUserInterfaceStyle이라는 속성과도 동일하다. Value값에 Light, Dark를 이용하여 두 모드 중 하나로 강제할 수 있다. 추가로, 코드상으로 다크모드를 확인할 수 있는 프로퍼티는 UITraitCollection.userIn..
공부를 하던 도중 파일을 Xcode 프로젝트 폴더에 넣어야 하는 일이 발생했다. 가령 Google Firebase를 사용할 때 필요한 GoogleService-Info.plist같은 파일들 말이다. 드래그 앤 드롭을 하면 그냥 들어갈 줄 알았는데, 아래와 같은 화면이 등장했다. Copy items if needed: 체크하면 프로젝트 폴더로 해당 파일/폴더가 복사가 된다. 프로젝트 폴더에 파일이 없는 경우 복사하게 되는 것인데, 체크 해제된 상태라면 프로젝트가 프로젝트 폴더에 없는 파일에 의존하게 되어 파일의 수정 및 이동시에 에러가 발생하게 된다. 프로젝트 파일 압축 전송이나 Git 업로드 시에도 파일이 올라가지 않는다는 것.(플젝 소스 공유 시 난처한 상황이 발생할 수 있다) Create groups..