본문 바로가기

iOS45

(MapKit) Info.plist에 있는 사용자 위치 접근 요청 6가지 머리말 포스팅 목적 Info.plist - Information Property List에 있는 위치 접근 요청 6가지에 대한 요약 MapKit에서 사용자 위치에 대한 접근을 요청하기 위해 Information Property List를 살펴 보았는데 아래처럼 6가지가 나왔다. 각각의 요청이 무엇인지 궁금해서 이를 요약하여 간단하게 표로 정리해 보았다 사용자 위치 접근 요청 6가지 종류 요청 메시지 내용 iOS/macOS 공식 문서 링크 Always and When In Use Usage Description App Background 실행 시 위치 정보 접근 (항상) iOS 11.0+ NSLocationAlwaysAndWhenInUseUsageDescription Always Usage Descript.. 2023. 10. 4.
Swift) 클로저의 캡처와 참조 타입 머리말 포스팅을 하게 된 이유 클로저는 그저 이름이 없는 함수인가? 내가 기존에 사용하던 클로저는 그저 이름이 없는 함수, 함수의 이름을 짓기 귀찮을 때 사용하는 중괄호 `{}` 정도로만 여겼다. 하지만 수업 내용을 들으면서 단순히 클로가 함수의 기능을 넘어 값을 캡처하는 참조 타입이라는 것을 배웠는데 이를 정리하기 위해 포스팅을 하게 되었다. 클로저의 정의 공식 문서에 정의된 클로저는 다음과 같다. Group code that executes together, without creating a named function. 이름이 있는 함수를 만들지 않은 채, 같이 실행되는 코드의 묶음 Closures | Documentation 클로저의 추가적인 기능, 캡처(capture) 공식 문서의 서문에서 정의를.. 2023. 8. 31.
[UIKit] CLLoaction 톺아보기 보호되어 있는 글 입니다. 2023. 8. 23.
[Swift] didSet과 값 타입, 참조 타입의 인스턴스 머리말 글을 쓴 이유 내가 쓴 코드 // // VideoViewController.swift class VideoViewController: UIViewController { // 검색창과 테이블 뷰가 존재 -> searchBar에 didSet을 하면 왜 안될까? @IBOutlet weak var searchBar: UISearchBar! @IBOutlet weak var videoTableView: UITableView! // 검색 결과를 담은 videoList의 값이 변할 때마다 테이블 뷰를 업데이트 var videoList = [Video]() { didSet { videoTableView.reloadData() } } // 검색 결과(API 요청/응답)에 따라 videoList 배열에 새로 결괏값.. 2023. 8. 22.
[Swift] For-in Loop과 forEach Method의 차이점 머리말 for-in과 forEach는 그 생김새나 쓰임이 매우 비슷하다. 심지어 개발자 공식 문서에서 forEach를 설명할 때 for-in loop를 언급하면서 이를 정의한다. forEach의 정의 forEach(_:) Calls the given closure on each element in the sequence in the same order as a for-in loop. 주어진 클로저에 대하여, 시퀀스의 각 요소를 for-in 루프와 같은 순서로 호출한다 forEach(_:) | Apple Developer Documentation 그렇다면 두 개념의 차이는 무엇이고 실제 코드에서는 어떻게 다를까? 자세히 알아 보자. 차이점 둘에 대한 차이점은 바로 루프(loop; 반복문)와 클로저(clos.. 2023. 8. 17.
[Swift] 타입 캐스팅(Type Casting) 머리말 포스팅을 하게 된 이유 수업 시간에 UITableViewCell? 타입의 cell이라는 상수에 하위 클래스의 CustomTableViewCell 타입으로 다운캐스팅(as!)을 하는 것을 배웠다. as라는 키워드도 익숙하지 않은데 물음표(?)나 느낌표(!)까지 들어가 있어서 더더욱 무서웠다... 이후에 다운캐스팅을 포함한 타입 캐스팅에 대해 개념도 배우고 실습도 했지만 아직 긴가민가 해서 포스팅을 하게 됐다. 강의 시간의 코드 일부 class CustomTableViewCell: UITableViewCell { // ... func configureCell(row: ToDo) { // ... } // ... } class CustomTableViewController: UITableViewContr.. 2023. 7. 28.
[UIKit] 값을 새로 저장해도 왜 화면에 나타나지 않을까(UserDefault와 UIViewController 생명 주기) 머리말 앱에 대한 설명 구현한 앱은 "나의 기분"이라는 탭에서 "감정을 나타내는 이모티콘 버튼"을 눌렀을 때, "기본 통계"라는 탭에서 얼마나 눌렀는지를 확인 할 수 있는 앱이다. 데이터의 저장 방법은 UserDefault 데이터를 저장하는 것에는 여러 방법이 있겠지만 여기서는 강의 시간에 배운 UserDefault를 이용했다. UserDefault에 대한 설명은 공식 문서에서 아래와 같다. An interface to the user’s defaults database, where you store key-value pairs persistently across launches of your app. 애플리케이션이 실행될 때 계속해서 키-값을 쌍으로 한 형태로 이를 저장하는, 사용자의 기본 데이터베이스.. 2023. 7. 26.
[Swift] 열거형과 원싯값 (feat. CaseIterable) 머리말 참고 자료 Enumerations - The Swift Programming Language 열거형 (Enumerations) - Swift 열거형(Enumerations) 열거형의 정의 공식 문서에서 정의한 열거형이란 아래와 같다. 열거형은 연관된 값들의 묶음에 대하여 공통된 타입을 정의하고, 코드에서 타입 세이프한 방식으로 그 값들을 작업할 수 있도록 한다. An enumeration defines a common type for a group of related values and enables you to work with those values in a type-safe way within your code. 열거형 구문(Enumeration Syntax) enum이라는 키워드로 열거형을.. 2023. 7. 25.
[Swift] 번호 기호(#)로 Raw String 사용하기 머리말 참고 자료 Extended String Delimiters - Strings and Characters | Documentation 이스케이프 문자를 문자열로 표현하기 위한 번거로움 해당 문자 자체에 지정된 뜻을 가져서 곧바로 표현이 되지 않는 이스케이프 문자를 표현하기 위해서는 아래와 같이 문자의 바로 왼쪽에 역슬래시(\) 문자를 입력해야 한다. let backslash = "\\\\" // 역슬래시 let lineFeed = "\\\\n" // 줄바꿈 문자(\\n) let carriageReturn = "\\\\r" // 캐리지리턴 문자(\\r) let tab = "\\\\t" // 탭 문자(\\t) let quotationMark = "\\"" // " 큰따옴표 문자 하지만 하나의 문자열 안.. 2023. 7. 23.
[UIKit] 모서리 깎기와 그림자 설정을 동시에 하기 머리말 문제점 그림자 처리를 하려고 하면(.layer.shadow~) 그림자만 남고, 모서리를 깎으려 하면(.layer.cornerRadius) 모서리만 깎여지는 문제가 발생했다. 하나의 ImageView에 두 설정을 하려면 양립 불가능하다는 피드백을 받았다. 완성 화면 해결책 네 개의 View 안에 각각의 ImageView를 넣었다. 여기에 ImageView를 실제로 화면의 모서리를 깎고, 그 상위의 View에 그림자를 넣는 방식으로 문제를 해결했다. ViewController의 계층 구조 코드 import UIKit class DatePickerViewController: UIViewController { ... @IBOutlet var topLeftView: UIView! @IBOutlet var .. 2023. 7. 20.
반응형