---
# System prepended metadata

title: 미션 1

---


# 미션 1

![](https://i.imgur.com/K7C6a72.png)

# 미션 2
## 위젯을 구현하기 위한 Component 들에는 무엇이 있을까요?

## 각 구성요소는 위젯에서 어떤 역할을 하고 있나요?

### EntryView를 조작해 어떤 변화가 있는지 살펴봅시다.

### Provider 의 각 메서드는 어떤 역할을 할까요?
#### placeholder, getSnapshot 메서드는 어떤 역할인가요?
getSnapshot : Provides a timeline entry that represents the current time and state of a widget.
(위젯의 현재 시간 및 상태를 나타내는 시간 표시줄 항목을 제공합니다.)
placeholder : Provides a timeline entry representing a placeholder version of the widget.
(위젯의 placeholder 버전을 나타내는 시간 표시줄 항목을 제공합니다)

#### getTimeline 메서드는 어떤 역할인가요?
Provides an array of timeline entries for the current time and, optionally, any future times to update a widget.
(현재 시간 및 선택적으로 위젯을 업데이트할 향후 시간에 대한 타임라인 항목 배열을 제공합니다.)
#### Timeline의 policy를 변경하면 어떻게 될까요?
Timeline : WidgetKit이 위젯 뷰를 업데이트할 날짜를 지정하는 객체
TimelineReloadPolicy : WidgetKit이 위젯 제공자에게 새로운 타임라인을 요청하는 가장 빠른 날짜를 나타냄
    atEnd : 타임라인의 마지막 날짜가 지난 후 WidgetKit이 새 타임라인을 요청하도록 지정하는 정책
    after(Date) : WidgetKit이 새 타임라인을 요청할 미래 날짜를 지정하는 정책
    never : 새 타임라인을 사용할 수 있을 때 앱이 WidgetKit에 메시지를 표시하도록 지정하는 정책

#### 위젯은 언제 업데이트될까요?

#### 위젯이 구성되는 방식을 순차적으로 설명해봅시다.


![](https://i.imgur.com/92dUYx6.png)

# 미션 3
![](https://i.imgur.com/IQIbmpd.png)
```
struct WoongEntryView : View {
    var entry: Provider.Entry
    
    var body: some View {
        VStack {
            Text("TODO")
            HStack {
                Text("업데이트 시간")
                    .bold()
                Text(entry.date, style: .time)
            }
            .padding(1)
            
            RoundedRectangle(cornerRadius: 10, style: .circular)
                .fill(.cyan)
                .frame(width: 280, height: 100)
                .overlay(
                    VStack(spacing: 5, content: {
                        Text(DummyProjects.projects[0].projectName)
                        Text(DummyProjects.projects[0].description)
                    })
                )
            RoundedRectangle(cornerRadius: 10, style: .circular)
                .fill(.cyan)
                .frame(width: 280, height: 100)
                .overlay(
                    VStack(spacing: 5, content: {
                        Text(DummyProjects.projects[1].projectName)
                        Text(DummyProjects.projects[1].description)
                    })
                )
        }
    }
}
```