iOS/Swift 21

상태를 감지하는 방법

적용한 Keyboard show, hide 감지 하는 기능이다. 나중에 상태 감지 후 bool 만 받아서 어떤 내용으로 감지할 때 쓰기 좋을 것 같고처음 보는 코드들이 있어서 정리해본다. import Foundationimport Combineimport UIKitextension Publishers { static var keyboardWillChange: AnyPublisher { let willShow = NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification) .map { _ in true } let willHide = Notification..

iOS/Swift 2025.04.23

SwiftData 모델에 있는 데이터가 빈 값일 수도 있고 아닐 수도 있을 때, 어떻게 처리해야하지?

Big Idea (큰 주제): 옵셔널 Essential Question (핵심 질문): 가지고 있는 데이터 따라 옵션적으로 값을 보여주거나, 보여주지 않거나 하려면 어떻게 해야할까? Challenge (도전 과제): 알아보고, 직접 구현 해보고, 정리해보자 Activities (학습 활동): 현재 하고 있는 챌린지에서 이렇게 데이터를 표현해야한다.1. 값이 무조건 있어야한다. (이게 기본, Non-Optional 타입)2. 값이 있을 수도, 없을 수도 있다.3. 값이 없으면 보여주지 않아야한다.4. 값이 어떤가에 따라 다르게 처리해야한다. 이러한 조건에서 어떻게 앱을 구현해야할지 찾아봐야겠다. 일단 데이터에 값이 있을 수도 있고, 없을 수도 있음을 표현하는 방법은 여러가지가 있다. 프로그래밍 적으로..

iOS/Swift 2025.04.19

SwiftData 에서 여러개의 모델을 가져올 때 어떻게 해야할까?

만약 SwiftData 에 선언한 모델이Candy, Chocolate, Cookie 라고 하자. 이 값들을 모두 가져와달라고 선언하려면 어떻게 해야할까? 나는 이 질문을 받았을 때, 공부를 안해서 배열로..이케..대충... [] 대괄호 쓰고..... 이렇게 담으면 되지 않으까여ㅎ 했다. 그리고 질문 시간이 끝난 뒤, 제대로 공부하자고 생각해서 WWDC 도 보면서 공부를 하려고 한다. "했다"가 아님. 간단하게 여러개의 모델 선언하는 방법... 배열로 가져오는게 맞긴 맞았다.@mainstruct MyApp: App { var body: some Scene { WindowGroup { ContentView() } .modelContain..

iOS/Swift 2025.04.18

View에서 parameter를 선언할때 var, let 선택 기준

var, let 은 Swift 든 어떤 프로그래밍 언어에서든 제일 처음 배우게 된다.변수, 상수 let은 값이 절대 바뀌지 않고var은 값이 바뀔 수 있다. View 에서 다른 View 로 전달을 받을 때, 어떤 View에서는 let으로 받고, 또 어떤 View에서는 var 로 받는다. 어떤 기준으로 선택해야할까? 일단 구체적으로 해당 받은 화면에서 값이 바뀌지 않을 경우에는 let을 1순위로 선택해야한다. struct MySampleView: View { let title: String var body: some View { Text(title) }} View는 struct이기 때문에, 변경이 일어나면 새로 그리는 방식이므로 값이 내부에서 바뀔 경우에는 var를 선..

iOS/Swift 2025.04.13

Swift 에서의 프로퍼티(Property)

Swift 에서 프로퍼티는 클래스(Class), 구조체(Struct), 열거형(Enum)에서 특정 값을 저장하고 관리하는 역할이다. 저장 프로퍼티(Stored Property)연산 프로퍼티(Computed Property)   저장 프로퍼티 저장 프로퍼티는 값을 저장하는 역할로,보통 Swift 문법을 공부해보자 하고 앞 쪽에서 제일 먼저 소개하는 변수, 상수인 var, let 을 사용하여 선언 하게 된다.이는 Class와 struct 안에서 사용해야한다. struct Person { var name: String let age: Int }var person = Person(name: "ANee", age: 15)print(person.name) // ANeeperson.nam..

iOS/Swift 2025.03.21

Swift 에서의 Generics(제너릭)

Generic이란특정 타입에 의존하지 않고, 다양한 타입에서 동작할 수 있도록 구현하는 기능을 말한다.이를 이용하면 코드의 재사용성과 타입 안정성을 높일 수 있다. Swift에서는 이를 함수, 메서드, 클래스, 구조체, 열거형 등 다양한 곳에서 사용이 가능하다.  쉽게 말해서 여러 타입의 값이 들어왔을 때 이를 규정하지 않고 다양하게 받아 처리하게 해준다는 뜻이다. 제너릭 함수inout 매개변수튜플을 이용한 값 교환제너릭 메서드구조체에서의 제너릭 메서드제너릭 클래스제너릭을 이용한 클래스 설계제너릭 열거형제너릭을 활용한 Result 타입제너릭 구조체여러 개의 타입을 받는 구조체동일한 타입을 제한하는 Comparable 사용제너릭과 프로토콜associatedtype을 활용한 프로토콜 정의프로토콜과 제너릭Di..

iOS/Swift 2025.03.20

SwiftUI 로 고차함수 예제코드

고차 함수 (Higher-Order Function)고차 함수는 다른 함수를 매개변수로 받거나, 함수 자체를 반환하는 함수를 말한다.Swift의 map, filter, reduce 같은 함수가 대표적인 고차 함수이다. 다른 함수를 매개변수로 받을 수 있다.함수를 반환할 수 있다.클로저(Closure)와 자주 사용된다. import SwiftUIstruct MyHOFView: View { let array = [1,2,3,4,5,6,7,8,9,10,11,17,18] @State private var displayedArray: [String] = [] var body: some View { VStack { HStack { ..

iOS/Swift 2025.03.19

Swift 에서의 초기화와 초기화 해제 (init, deinit) 그리고 self

오늘 찾아본 키워드1. 초기화2. 초기화 해제3. self 초기화 (Initialization)  초기화는 인스턴스를 만들 때 반드시 필요한 작업이다.이를 수행하지 않으면 객체가 제대로 동작하지 않을 수 있다.  초기화가 필요한 이유는 다음과 같다.프로퍼티에 올바른 초기값 설정객체 생성 시 필요한 설정 수행다양한 생성 방법 제공(initializer overloading) // 1. 올바른 초기값 설정class User { var name: String // 초기값 없이 선언 init(name: String) { self.name = name // 초기값을 설정하여 사용해야한다. }}let user1 = User(name: "Taenee")let user2 = Use..

iOS/Swift 2025.03.19

Swift 에서의 일급 함수 (First-Class Function)

1. 정의Swift에서 함수는 일급 객체로 취급되며, 변수에 저장하거나 다른 함수의 인자로 전달할 수 있고, 반환값으로 사용할 수도 있다.  2. 개념일급 함수프로그래밍에서 함수가 일반적인 데이터(정수, 문자열 등)처럼 취급될 수 있는 개념을 의미한다. 즉, 함수 자체를 값처럼 활용할 수 있으며, 변수에 저장하거나 다른 함수에 인자로 전달할 수 있고, 함수의 반환값으로도 사용할 수 있다. 주요 특징변수에 할당 가능함수를 변수나 상수에 저장할 수 있다.함수의 인자로 전달 가능다른 함수의 매개변수로 함수를 전달할 수 있다.함수의 반환값으로 사용 가능함수가 다른 함수에서 반환될 수 있다.3. 문법 코드// 함수를 변수에 할당 가능let add: (Int, Int) -> Int = { (a, b) in retu..

iOS/Swift 2025.03.18
728x90