scrumdinger 12

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

Scrumdinger 개발 10 : Recording audio

SwiftUI의 상태 관리(state management) 와생명 주기(life cycle) 기능을 활용해 데이터 흐름(data flow) 을 구현해본다.  ScrumTimer 가 변경됨에 따라 MeetingView 에서 각 View 들에게 어떻게 처리하는지를 알아본다.  보면 ScrumTimer @Observable의 변동에 대한 알림은 MeetingView 만 받는다.MeetingView 에서 @State 가 변경 됨에 따라 각 뷰들을 자동으로 변화되기 때문이다.   그리고 SpeechRecognizer 는 마이크에 접근해 오디오를 캡처한 후, 들리는 음성을 텍스트로 작성한다.이 또한 @Observable 매크로를 적용한다.@State를 사용하면 회의 뷰 안에서 음성 인식기의 단일 인스턴스를 생성할 ..

iOS/App 2025.04.10

Scrumdinger 개발 09 : Drawing the timer view

이제 주요 서비스인 타이머에 맞게 미팅 진행을 보여주는 뷰를 만들 차례이다.  Create the meeting timer view    MeetingTimerView 를 생성해서 원의 형태로 현재의 진행 상황을 보여주도록 할 것이다. import SwiftUIimport ThemeKitimport TimerKitstruct MeetingTimerView: View { // TimerView 를 그리기 위해서는 Speaker 배열 정보만 MeetingView 에서 넘겨주면 된다. let speakers: [ScrumTimer.Speaker] let theme: Theme private var currentSpeaker: String { speakers.first(..

iOS/App 2025.04.09

Scrumdinger 개발 08 : Handling errors

전 회사에서 웹을 할 때 계시던 차장님이 초반 Spring 공부 가이드를 알려주시면서 강조해주셨던 부분이 있다.에러처리를 반드시 꼼꼼히 공부하라는 말씀이셨다.사용자 입장에서 없는 서비스나, 제공이 미숙한 서비스보다는 에러가 나는게 제일 크리티컬한 문제라고 강조해주셨던 기억이 있다. 그래서 테스팅이나 에러처리 과정이 꼼꼼해야하는데사실 제일 어렵다...ㅎ...ㅠ 내가 할땐 다 잘된단말이지?(?)크로스 체크가 필요한 이유.. 아무튼, 예기치 않은 에러등의 발생 시 그것을 핸들링하는 방법을 Swift 에서 어떻게 하는지 공부해보도록...하겠다...!👍  근데 갑자기 왜 이렇게 일기식으로 포스팅을 하고 있는 건지 모르겠음.  Add an error wrapper structure  일단 Error 가 났을 시 ..

iOS/App 2025.04.08

Scrumdinger 개발 07 : Persisting data

Persisting data  이제 SwiftData 프레임 워크를 이용해서데이터 영속성(persistence) 를 추가하고,영구 저장소(persistence store) 에 데이터를 CRUD 하도록 하여 동기화시킨다.   이러기 위해선 다시 model 리팩토링에 들어간다.SwiftData 를 import 하여 사용하겠음을 체택하고 SwiftData 를 사용할 수 있도록 선언해주는 과정을 알아보려고 한다.그리고 @Relationship 을 사용해서 관계형 데이터임을 알려준다. DailyScrum, Attendee, History 모두 @model 을 붙인 뒤 class 화 시켜준다.  import Foundationimport ThemeKitimport SwiftData //swiftdata@Model ..

iOS/App 2025.04.07

Scrumdinger 개발 06 : Updating app data

이제 서비스 단 구현을 시작하는 듯 하다.회의를 추가하고, 수정할 수 있는 기능을 구현하는데 이 기능에서 주요로 중요한 것을@State, bindings, and the source of truth 이 세가지이다.알고 있는 방법이긴 하지만,이를 어떻게 더 잘 쓸 수 있을지에 대해 생각을 해봐야겠다. Use the edit view to create a new scrum  ScrumsView.swift 코드에 @State 를 적용한다. DetailEditView를 활용하여 새로 등록할 때도 해당 화면을 활용할 수 있도록 한다.@State private var isPresentingNewScrumView = false // 생성뷰를 보여줄 지에 대한 여부 ..

iOS/App 2025.04.06
728x90