반응형

swift 12

SwiftUI - ConfirmationDialog 알아보기, ActionSheet Deprecated

ActionSheet 를 사용하는데 deprecated 되었다고 confirmationDialog를 사용하라고 합니다. 바로 알아봅시다. ConfirmationDialog 가장 기본적인 confirmationDialog 입니다. 첫번째 인자로 titleKey가 들어가고 isPresented 에 바인딩값을 연결해준 뒤 action 클로저 안에 우리가 평소에 쓰는 Button을 쭉 나열하면 됩니다. struct ContentView: View { @State var isPresented = false var body: some View { Button(action: { isPresented = true }) { Text("사진 불러오기") .padding() } .confirmationDialog( "제목"..

ios/swiftUI 2022.07.26

Swift - 앱 버전, 앱 빌드번호, 앱 이름, 앱 번들 Id 얻는 방법

extension Bundle { var appName: String { return infoDictionary?["CFBundleName"] as! String } var bundleId: String { return bundleIdentifier! } var versionNumber: String { return infoDictionary?["CFBundleShortVersionString"] as! String } var buildNumber: String { return infoDictionary?["CFBundleVersion"] as! String } } 사용할 때에는 아래와 같이 사용합니다. let str = "\(Bundle.main.appName) v \(Bundle.main.versio..

ios 2022.06.22

SwiftUI에서 UIKit의 Alert 사용하기

1. 왜 SwiftUI의 Alert이 아닌 UIKit의 Alert을 사용하는가? SwiftUI의 Alert 먼저 SwiftUI에서 제공되는 Alert을 사용하기 위한 필요한 요소에 대해 알아보자. 1. alert이 열려있는지 닫혀있는지에 대한 정보를 담은 Bool 타입의 State 변수를 선언한다. 2. View에 alert을 체이닝 형식으로 선언한 후 아까 선언한 State 변수를 연결한다. 3. View의 alert 클로저에 Action처리를 포함한 Alert(View)을 추가한다. struct AView: View { // 1 @State var isShowingAlert = false var body: some View { VStack { Button(action: { isShowingAlert ..

ios/swiftUI 2022.05.10

Swift - Combine의 Publisher 알아보기 Just, Future, Fail, Empty, Deferred, Sequence

Publisher #Combine #Publisher Just 가장 단순한 형태의 Publisher 입니다. 에러 타입은 항상 Never 입니다. Just((0...5)) .sink { value in print(value) // 0...5 } Future 일반적으로 Publisher의 처리를 sink 라는 구독을 형태로 많이 처리하게 되는데 이 때 클로저를 전달하는 과정에서 콜백 기반의 completion 핸들러를 사용하게 되는데 Futrue를 통하여 더욱 깔끔한 코드 작성이 가능해 집니다. let myFuture = Future { promise in promise(.success(10)) } myFuture.sink { value in print(value) // 10 } URLSeesion 이나 ..

ios/Combine 2022.02.08

[Swift] 백준 11047 - 동전 0

import Foundation /* 동전 종류 N 가치의 합 K K원을 만드는데 필요한 동전 개수의 최솟값은? */ let firstInputItems = readLine()!.components(separatedBy: " ").map { Int($0)! } let kinds = firstInputItems[0] var sum = firstInputItems[1] var elements = [Int]() elements = Range(0 ... kinds - 1) .map { _ in Int(readLine()!)! } .reversed() var count = 0 elements .forEach { element in let value = sum / element if value > 0 { count..

Algorithm/BackJoon 2022.01.24

[Swift] 백준 swift로 알고리즘 문제 푸는법 - readline(), Xcode Swift로 커맨드 라인 입력값 받기

알고리즘 문제를 풀어보려고 하는데 문제를 풀어도 어떤식으로 제출을 해야 하는지에 대한 글입니다. 1. 문제 풀기 위한 Xcode 세팅 1. 먼저 xcode를 열어 new project를 만듭니다. 2. macOS에서 Commend Line Tool을 선택합니다. 3. main.swift 파일에서 문제를 푸시면 됩니다! Playground로 하지 않고 Command Line Tool로 하는 이유는 아래를 보면 알 수 있습니다. 2. 입력값을 받는 문제 문제중에 입력값을 받는 문제들이 있습니다. 이 입력값을 받기 위해 일반 Playground를 사용하지 않고 Command Line Tool을 사용합니다. 입력값을 받기 위해서는 readLine()을 호출하면 됩니다. 실행을 하게되면 먼저 1. Hello, W..

Algorithm/BackJoon 2022.01.23

[Swift] 백준 11399 - ATM

import Foundation let count = readLine() let insertPersonTimes = readLine() var personTimes = insertPersonTimes!.components(separatedBy: " ").map { Int($0)! } personTimes.sort() var sum = 0 for i in 0 ..< personTimes.count { sum += personTimes[i] * (personTimes.count - i) } print(sum) 2개의 입력값을 받는 문제입니다 사실 첫번째의 count는 안받아도 될거 같은데... ㅎㅎ ios 개발을 하면서 커맨드 라인으로 입력값을 받은 적이 없어 약간 해맸네요... Xcode Swift로 커맨..

Algorithm/BackJoon 2022.01.23

SwiftUI - Combine (3) Combine의 생명 주기(Life Cycle)

Back pressure Combine은 구독자가 데이터의 흐름을 제어하도록 설계되어 있습니다. 그래서 구독자는 파이프라인에서 처리가 발생하는 시기와 대상도 제어합니다. 구독자가 얼마나 많은 정보를 원하거나 수용할 수 있는지에 대한 정보를 제공함으로써 파이프라인 내에서 처리를 주도한다는 것을 의미합니다. 이러한 요청은 구성된 파이프라인을 통해 전파되며 각 Operator는 차례대로 데이터 요청을 수락하고 연결된 Publisher에게 정보를 요청합니다. 이 것을 백 프레셔 라고 불리는 Combine의 기능이라고 합니다! 파이프라인이 취소되면 해당 파이프라인은 다시 시작되지 않습니다. 취소된 파이프라인 대신 새로운 파이프라인을 만들어야 합니다. 생명주기(Life Cycle) 1. 구독자가 게시자에게 연결되면..

ios/Combine 2022.01.21

SwiftUI - Combine (2) 핵심 개념 (Publisher, Subscriber, Operator, Subject)

Publisher(게시자) 요청 시 데이터를 제공해줌 구독이 없는 경우 Publisher는 데이터를 제공하지 않음 두 가지 유형을 제공함(Outpt Type, Failure Type) Subscriber(구독자) 구독자는 데이터를 요청하고 Publisher가 제공한 데이터(및 오류)를 처리해야 함 입력에 대한 유형과 실패에 대한 유형 두 가지 연관된 유형 구독자는 데이터를 요청을 시작하고 수신하는 데이터의 양을 제어함 Subscriber가 없으면 게시가 아예 되지 않기 때문에 Subscriber는 작업을 주도하는 것으로 생각할 수 있습니다. Operator(연산자) 연산자는 Publisher Protocol과 Subscriber Protocol을 모두 채택하는 클래스 게시자 구독 및 모든 구독자에게 결과..

ios/Combine 2022.01.20
반응형