Skip to content
This repository has been archived by the owner on Dec 31, 2023. It is now read-only.

시작하기

Jaesung edited this page Jun 5, 2022 · 2 revisions

프로젝트 구성

프로젝트 파일들은 아래 경로와 같이 구성되어 있습니다.

  • KuringLite (프로젝트 상위폴더)
    • KuringLiteApp.swift
    • ContentView.swift
    • 📁 기능1
      • 기능1을 위한 뷰1
      • 기능1을 위한 뷰2
      • 기능1을 위한 데이터모델1
    • 📁 기능2
      • 기능2을 위한 뷰1
      • 기능2을 위한 뷰2
      • 기능2을 위한 데이터모델1
    • 🏞 Assets

프로젝트는 Apple의 SwiftUI 기반이며 Apple 의 SwiftUI 공식 문서 가이드에 따라 각 기능들은 아래와 같은 공통적인 구조로 구성되었습니다.

  • View(뷰)

    실제 UI에 대한 묘사를 담고 있는 구성요소 입니다. View 프로토콜을 상속합니다.

    struct NoticeList: View {
        var body: some View { ... }
    }
  • DataModel(데이터모델)

    뷰에서 사용되는 데이터들을 관리하기 위한 데이터모델입니다. ObservableObject 프로토콜을 상속하며 @StateObject, @ObservedObject, @EnvironmentObject 와 같은 속성과 함께 사용하여 뷰를 위한 데이터를 관리합니다.

    class NoticeListModel: ObservableObject { ... }
    
    struct NoticeList: View {
        @StateObject private var model = NoticeListModel()
    }

기능

쿠링 Lite가 제공하는 주요 기능은 다음과 같습니다.

참고 이 항목은 쿠링 Lite 1.0.0 버전 기준으로 작성되었습니다. 1.0.0 이후의 변경사항들은 Release Note를 확인해주세요.

공지사항 목록

NoticeList 는 공지사항 목록을 나타내는 이며 NoticeTypeColumnNoticeRow 로 구성되어 있습니다. 그리고 NoticeListModel 이라는 데이터모델이 API 통신을 통해 공지사항 데이터들을 관리합니다.

용어 정리

Notice

공지사항 그 자체를 의미 합니다.

프로퍼티 용도
articleID 공지사항 고유번호로 URL 주소에 쓰입니다. 또한 공지사항들 간의 식별자로 사용됩니다
subject 공지사항 제목
category 공지 카테고리
urlString URL 주소 값
postedAt 공지 게시시간 정보. 1970년 1월 1일 기준 값
tags 공지 제목에서 추출한 태그 값들
isNew 마지막 접속 이후 새로 올라온 공지인지 여부
isRead 공지를 읽었는지 여부
isSubscribed 구독한 카테고리에 속하는 공지인지 여부

NoticeType

학사, 국제, 장학, 취창업 등 공지사항의 카테고리 항목을 의미합니다. 공지사항의 타입임을 나타내기 위해 사용된 네이밍 입니다.

🙋 질문: 왜 Category 라는 네이밍을 쓰지 않나요? 이미 애플이 쓰고 있어요...  Developer Documentation

NoticeType 객체들은 각각의 한글명을 나타내는 .koreanValue 라는 프로퍼티를 갖고 있습니다.

NoticeList

Screen Shot 2022-06-05 at 11 24 36 PM

카테고리별 공지사항 목록을 보여주는 뷰 입니다.

struct NoticeList: View {
    @StateObject var model = NoticeListModel()

    var body: some View {
        VStack {
            // 공지 카테고리
            ScrollView {
                LazyHStack {
                    ForEach { NoticeTypeColumn(...) }
                }
            }

            // 공지 리스트
            List {
                ForEach { NoticeRow(...) }
            }    
        }
    }
}

NoticeTypeColumn

Screen Shot 2022-06-05 at 11 25 12 PM

하나의 공지사항 카테고리 항목 (NoticeType)을 나타내는 아이템 뷰입니다.

NoticeRow

Screen Shot 2022-06-05 at 11 25 31 PM

공지사항 목록을 구성하는 각각의 아이템 뷰로, 하나의 공지사항에 대한 주요 정보를 제공합니다.

Clone this wiki locally