일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Java
- 백준
- Appearance변경
- SwiftUI_Preview_Provider
- programmers
- android
- snapkit
- segue
- AsyncImage
- pod install
- UserDefaults
- ios15
- Kotlin
- SWIFT
- 코딩테스트
- swiftUI
- image
- format형식
- cocoapods
- EventKit
- MapKit
- UIStackView
- alamofire
- Alert
- ViewModifier
- autolayout
- NotificationCenter
- ios
- kakaomap
- CoreLocation
- Today
- Total
목록분류 전체보기 (68)
감자주먹밥
SwiftUI 에서 지도를 띄우기 위해서는 먼저 MapKit을 import 해야한다. Map(coordinateRegion:, interactionModes:, showsUserLocation:, userTrackingMode:, annotationItems:, annotationContent:) MapKit을 import 하면 지도를 보여주는 Map 을 사용해 View에 보여줄 수 있다. coordinateRegion: Binding 타입으로 지도가 표시될 위치와 지도의 zoom level을 초기화해 주입한다. MKCoordinateRegion(center:, span:) MKCoordinateRegion(center:, latitudinalMeters:, longitudinalMeters:) MKCo..
EventKit 달력, 미리알림 어플의 데이터에 접근 하여 이벤트를 생성, 검색, 편집을 할 수 있는 프레임워크. 먼저 사용하기 전, info.plist에 권한 체크를 받아야 한다. let status = EKEventStore.authorizationStatus(for: .event) switch status { case .notDetermined: //아직 권한 팝업 뜨기 전 let accessGranted = try await ekStore.requestAccess(to: .event) guard accessGranted else { throw ServiceError.accessDenied } case .restricted: throw ServiceError.accessRestricted case ..
대부분 Json을 사용하기 때문에 XML을 사용할 일이 없었는데, OpenAPI를 하나 사용하다 보니 무조건 XML로만 데이터가 넘어와 XML을 파싱하는 법을 알아보고 적용해봤다. XMLParser Foundation에 기본으로 들어가 있는 XMLParser를 사용해 XML을 파싱할 수 있는데, Json과 달리 태그와 값으로 이루워진 XML특성상 사용을 위한 Delegate를 설정해줄 필요가 있다. 먼저 초기화는 간단하다. let parser = XMLParser(data: data) parser.delegate = subjectParser.self parser.parse() Data 타입의 XML을 XMLParser의 초기화 파라미터로 받을 수 있고, URL도 초기화시 받을 수 있는데, URL은 테스트..
저번에 UICollectionView의 Compositional Layout을 공부할 때 만들었던 영화앱의 API 통신 부분을 공부할 겸 변경하게 되었다. 영화진흥원 API를 사용해 일간, 주간 박스 오피스 리스트를 가져오고, KMDB API를 사용해 영화 상세정보를 받아와 포스터를 띄웠다. ///BoxOffice 일간, 주간 정보 모두 반환 func searchBoxOfficeInfo(dateRange: DateRange) async throws -> [MovieInfo] { let url = APIInfo.boxOfficeHost + dateRange.rawValue var dataTask: DataTask switch dateRange { case .daily: let param = BoxOffic..
비동기 작업을 하면서 발생할 수 있는 문제는 Data race 이 있다. Swift Concurrency는 이를 방지하기 위해 컴파일 단에서 오류를 내는 식으로 이를 방지하는데, Data race를 피하면서 여러 task가 하나의 자원을 공유하면서 쓰려면 어떻게 해야할까? GCD에서도 알아봤지만, data race는 여러 스레드가 하나의 자원에 동시에 접근할 때 발생할 수 있다. 읽기만 하면 문제는 없지만, 값을 변경하려고 할 때 중간에 생각했던 값이 아닌 바뀐값이 나올 수 있기 때문이다. Mutex, Semaphore를 사용해서 한번에 하나씩만 접근할 수 있게해 해결할 수 있는데, Swift Concurrency의 Actor도 한 번에 하나의 Task만 접근할 수 있게 하여 data race를 해결 할..
Task Asynchronous Function을 생성하고 실행하려 할 때 viewDidLoad나 일반적인 함수에서는 실행이 되지 않는 것을 알 수 있다. 그 이유는 Asynchronous Function은 항상 concurrent context에서 실행되어야 하기 때문이다. 이를 실행하려면 Task를 사용하면 된다. Task는 프로그램 일부를 비동기적으로 실행할 수 있는 작업 단위다. Task를 사용하면 임의의 스레드에서 다른 실행 맥락과 함께 동시에 실행된다. 그리고 각 Task는 다른 Task와 동시에 실행할 수 있다. task가 여러개 만들어 지면 task들은 각각 독립적으로 작업을 수행한다. Task Block은 비동기로 실행된다. Task block의 작업은 await를 만나 중단될 수는 있지..
WWDC 2021에서 Swift Concurrency에 대한 소개가 있다. GCD, Operation을 사용해서 비동기 작업을 수행하거나 URLSession에 complationHandler로 작업 종료 후 처리를 했는데 Swift Concurrency를 사용하면 어떤 장점이 있고, 어떻게 더 쉽고 간편하게 처리 할 수 있는지 알아보고 직접 사용해봤다. Swift Concurrency의 장점 가독성 completionHandler 콜백을 사용하지 않아 가독성이 좋아진다. 에러 핸들링 안정성 종료되는 시점에 completionHandler를 빼먹었을 때 컴파일시 문제는 없지만 에러처리가 불가능. Swift Concurrency를 사용하면 이런 에러처리를 빼먹는 실수를 방지할 수 있다. 동기화 처리 비동기 ..
Image | Apple Developer Documentation A view that displays an image. developer.apple.com Image SwiftUI 의 Image는 Asset 또는 디스크의 이미지를 보여주거나, SFSymbols를 표시할 수 있는 View. UIImage, CGImage도 가능. IOS 13.0 부터 사용가능 기본적으로 사용하는 이미지 표시 방법은 다음과 같다. Image("tempImage") Image(decorative: "tempImage") Image(systemName: "chart.bar.fill") asset에 있는 Image를 가지고 올 수 있으며 Bundle 파라미터도 존재한다. 기본값은 nil 공식 문서에서 Image 각 이미지 생성..
Text("Hello World") 사용방법은 간단하다. 위 코드처럼 Text에 string 값을 넣거나 변수로 된 String 값을 넣으면 된다. 기본적으로 사용하는 방법은 Text 안에 String 값을 넣는것이지만 그 외에도 많은 생성 방법이 있다. 첫 번째 파라미터 이름을 기준으로 순서대로 역할을 알아보았다. AttributedContent - AttributedString Type의 변수를 넣어서 사용할 수 있다. AttributedString은 텍스트의 특정 부분에 스타일을 적용 할 수 있다. (MarkDown, Custom Text) date - Date값을 넣고 Style을 지정하면 스타일에 따라 정해진 표시형식의 텍스트가 출력된다. 옵션으로는 date, time, timer, relati..
SwiftUI 에서 Alert 창을 띄우기 위해서는 View의 Modifier인 .alert 메서드를 사용하면 된다. alert(_:isPresented:presenting:actions:message:) | Apple Developer Documentation Presents an alert with a message using the given data to produce the alert’s content and a string variable as a title. developer.apple.com 그런데 SwiftUI는 IOS 14.0을 지원하고, 새로 지원하는 alert modifier는 IOS 15.0 부터 가능하다. (13.0도 SwiftUI를 지원했던 것으로 기억하는데, SwiftUI프로..