Home

WidgetKit (12)

CoreData to SwiftData (iOS 17) Convert 이전글에서 Intent Migration에 대해 언급을 한적이 있다. 이번에도 그와 유사한 방법으로 진행이 가능하다. 우선 CoreData 파일을 클릭하고. 아래 사진처럼 진행을 하자 그리고 next를 누르다가 target을 모두 체크를 하는걸 잊지말자. 그러면 이렇게 파일이 만들어진다. import Foundation import SwiftData @Model public class Day { var date: Date? var didStudy: Bool? public init() { } ...

Read more

WidgetKit (11)

Widget 적용 기본적인 UI도 진행이 되었으니 이젠 Widget 설정을 해본다. 1. Entry struct CalendarEntry: TimelineEntry { let date: Date let days: [Day] } Entry의 이름을 바꾸고 날짜를 담을 days를 만들었는데 에러가 뜬다. 왜냐 Day의 경우 CoreData의 Entity class이기 때문. 해당 class를 사용하기위해선 CoreData파일에서 Target을 체크해야한다. 역시나 없다. 추가해주자. 이젠 적용이 된다. 이때 Entry에 새로운 field가 추가 되었으므로 Missing Error가...

Read more

WidgetKit (10)

App Group 적용하기 앱과 위젯에 같은 CoreData의 값을 같이 사용하기 위해 App Group을 사용해 준다. 이전글에서 관련 내용을 다뤘으니 한번 다시 보는것도 좋을듯. 그전에 Widget을 만들어 준다. 만드는건 이사진 한장으로 대체 App Group 만드는것도 이전에 언급했으므로 아래 사진으로 대체한다. 첫번째는 앱에서 App Group 생성 두, 세번째는 생성된 App Group을 위젯에도 적용 CoreData의 Container Migration 위의 과정을 통해 Shared Container를 생성했지만, 현재 CoreData를 관리하는 Persistence 파일을 확...

Read more

WidgetKit (9)

Calendar에 TapGesture 추가 현재는 캘린더에 어떠한 액션도 적용이 되어있지 않다. 이젠 캘린더를 탭했을때의 Gesture를 추가해 보도록 한다. onTapGesture Modifier를 사용한다. .onTapGesture { if day.date!.dayInt <= Date().dayInt { day.didStudy.toggle() do { try viewContext.save() print("👆 \(day.date!.dayInt) now studied.") } catch { ...

Read more

WidgetKit (8)

이번에는 Coredata를 연동한 Calendar 위젯을 만들어보려고한다. 일반적으로 박스를 친 부분에는 None인데, 이번엔 CoreData를 사용하기에 프로젝트를 생성하면서 CoreData도 같이 생성되게 하였다. 사실 체크 안했더라도 이후에 CoreData를 새로 추가해도 되긴하다. Attribute 추가 사진과 같이 한다. 뭐 언급할 부분은 없다. Preview 수정 for _ in 0..<10 { let newDay = Day(context: viewContext) newDay.date = Date() newDay.didStudy = Bool.random() ...

Read more

WidgetKit (7)

이전에는 git address를 enum을 통해 정해진 주소만 사용해서 적용을 했다면 이제는 주소를 추가하여 원하는 Repository를 확인 하도록 만들어 보려고 한다. ContentView UI Design Repo Widget의 APP의 ContentView를 디자인 해준다. 이부분은 생략 User Default 추가 및 적용 여기서 App Groups를 추가해준다. App Group 이란? App Extension Programming Guide도 참고. App Group은 같은 개발자 계정에 속한 앱들의 데이터 공유를 가능하게 하는 iOS의 기능이다. 앱과 위젯은 서로 분리된 ...

Read more

WidgetKit (6)

App intents? iOS 17에서 애플은 APP Intents를 소개한다. 그렇다면 App Intents는 무엇일까? 이건 WWDC2024 Docs에서는 다음과 같의 정의를 한다. The App Intents framework provides functionality to deeply integrate your app’s actions and content with system experiences across platforms, including Siri, Spotlight, widgets, controls and more. App Intents 프레임워크는 Siri, Spotli...

Read more

WidgetKit (5)

WidgetBundle 만들기 WidgetBundle관련 Docs는 여기 간단하게 정리하면 여러개의 위젯을 제공하기 위함이다. 파일을 하나 만들어 주고 @main struct RepoWatcherWidgets: WidgetBundle { var body: some Widget { RepoWatcherWidget() } } 다음과 같이 작성해준다. 이때 한번도 사용하지 않은 @main이 등장 @main 이란? 프로그램 진입점 정의 @main은 Swift 프로그램이 시작될 때 호출되는 진입점을 나타낸다. 해당 속성이 부여된 타입은 프로그램의...

Read more