iOS 43

내가 더 이상 헷갈리기 싫어서 적는 Swift의 핵심 구성 요소

내가 맨날 파라미터, 메소드, 함수 등을 제대로 딱 인지 못하고 부르는 것 같아서(걍 막 냅다 함수라고 쓰거나, 걍 넘긴다 받는다 이런식으로 쓰는게 많아서)각자의 애들에게 정확한 이름을 확인하기로 했다. 1. Property 프로퍼티클래스, 구조체, 열거형에 속한 값저장 프로퍼티(Stored Properties) : 값을 저장하는 변수나 상수계산 프로퍼티(Computed Properties) : 값을 계산하여 반환타입 프로퍼티(Type Properties) : 인스턴스가 아닌 타입 자체에 속한 프로퍼티프로퍼티 옵저버(Property Observers) : 프로퍼티 값 변경을 관찰 후 반응 struct Person { var name: String // 변수 저장 프로퍼티 let bi..

iOS/Swift 2025.05.01

Managing your app’s life cycle

Foreground 에 있는 앱은 CPU를 포함한 시스템 리소스에서 우선권을 가진다.Background 에 있을 경우 가능한 작업을 적게 해야하고, 이상적으로는 아무것도 안하는게 좋다. 앱의 상태가 바뀔 때마다 적절한 delegate 를 가져와야하는데iOS13 이후로는 UISceneDelegate 객체를 이용한다 UIScene 단위에 대해서 알아보도록 해야겠다. 앱의 하나의 Scene = 하나의 UI인스턴스에 대한 라이프사이클과 상태 변화를 관리한다. // SceneDelegate.swiftclass SceneDelegate: UIResponder, UISceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, ..

iOS/Swift 2025.04.30

상태를 감지하는 방법

적용한 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

Accessing StateObject's object without being installed on a View. This will create a new instance each time

SwiftUI에서 @StateObject를 사용할 때 생길 수 있는 오류이다. @StateObject는 객체가 뷰의 생애주기 동안 한 번만 생성된다는 특징이 있다.뷰가 갱신되거나 재구성될 때 해당 객체가 계속 유지되도록 보장하는 속성 래퍼이다. @StateObject를 뷰 안 에서 직접 사용하지 않고, 다른 곳에서 객체에 접근하려고 할 때 문제가 생긴다. 뷰 외부에서 접근하려고 할 때, SwiftUI는 그 객체가 뷰에 제대로 설치되지 않았다는 메시지를 띄운다.@StateObject가 제대로 선언되지 않거나, 다른 곳에서 @StateObject에 접근하려고 할 때 나는 문제이다. // 잘못된 예시 (뷰 외부에서 @StateObject에 접근)@StateObject var myObject = MyObj..

iOS/ErrorDictionary 2025.04.22

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

Scrumdinger 분석하기 02-2. /scrum/ScrumsView.swift

Big Idea (큰 주제)- 코드분석Essential Question (핵심 질문)- Scrumdinger 에서 해당 코드를 쓴 이유에 대해 나는 잘 이해하고 있을까?Challenge (도전 과제)- 하나의 뷰에서 내가 모르는 코드에 대해 분석해보자 Activities (학습 활동)다시...🥹또 시간 조절을 못하고 있다. 일단 정리!! import SwiftUIimport SwiftDatastruct ScrumsView: View { @Query(sort: \DailyScrum.title) private var scrums: [DailyScrum] @State private var isPresentingNewScrumView = false var body: some View..

iOS/App 2025.04.17

Scrumdinger 분석하기 02-1. /scrum/ScrumsView.swift

Big Idea (큰 주제)- 코드분석Essential Question (핵심 질문)- Scrumdinger 에서 해당 코드를 쓴 이유에 대해 나는 잘 이해하고 있을까?Challenge (도전 과제)- 하나의 뷰에서 내가 모르는 코드에 대해 분석해보자 Activities (학습 활동) 이번에 할 파일은 ScrumsView 이다. import SwiftUIimport SwiftDatastruct ScrumsView: View { @Query(sort: \DailyScrum.title) private var scrums: [DailyScrum] @State private var isPresentingNewScrumView = false var body: some View { ..

iOS/App 2025.04.15

Scrumdinger 분석하기 01. /scrum/CardView.swift

Big Idea (큰 주제)- 코드분석Essential Question (핵심 질문)- Scrumdinger 에서 해당 코드를 쓴 이유에 대해 나는 잘 이해하고 있을까?Challenge (도전 과제)- 하나의 뷰에서 내가 모르는 코드에 대해 분석해보자 Activities (학습 활동) 완성된 코드를 전체적으로 모두 뜯어볼 생각이다. 전체 코드는 이정도. 파일 별로 정리해볼 것이다. //// CardView.swift// Scrumdinger//// Created by taeni on 3/31/25.//import SwiftUIstruct CardView: View { let scrum: DailyScrum var body: some View { VStack(ali..

iOS/App 2025.04.14
728x90