개발하는 동글 :]

[WIL],[0731...0806] 본문

카테고리 없음

[WIL],[0731...0806]

동글하다 2023. 8. 6. 18:26

이번 주 목표

 

  1. 내일 배움 캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기
  2. 아이폰 Setting App UI에 디테일 한 부분 및 약간의 기능추가 해보기, [0730]
  3. 프로토콜, [0730]
  4. 계산 속성, [0730]
  5. 접근 제어, [0730]
  6. 동기 비동기, [0730]

다음 주 목표

 

  1. 프로토콜, [0730]
  2. 계산 속성, [0730]
  3. 접근 제어, [0730]
  4. 동기 비동기, [0730]

내용

1. 내일 배움 캠프 커리큘럼을 따라가며 커리큘럼의 내용 잘 흡수하기

나와 스터디원들은 이번 주의 과제를 좀 더 높은 목표로 구현하는 것을 목표로 하였다.

그렇기에 시작된 기본 메모앱을 따라 만들어 보며 CRUD 및 화면 전환을 익힐 수 있었다.

생각했던 것보다 어렵고 시간이 많이 걸렸지만 메모앱을 따라 만들어보며 접하였던 부분들은 다음과 같다.

  1. UITableView
  2. UITableView Section
  3. CRUD
  4. ViewController 간의 데이터 전달
  5. UserDefault
  6. ToolBar
  7. Navigation Controller
  8. ViewController의 lifecycle

아쉬운 점

처음부터 데이터의 구조?를 잘 설계하고 접근하였다면 좀 더 편리하게 데이터를 처리할 수 있을 것 같다.

무작정 foldersection - folder - memosection - memo의 구조로 만들었는데 memosection 부분을

생략하여 메모의 날짜로 memosection을 사용할 때마다 분리하여 사용하는 것이 좀 더 용이할 것 같다.

또 한 상속을 하지 않는다면 구조체로 선언하는 것이 좀 더 좋았을 것 같다.

 

https://github.com/dongglehada/iPhoneMemoApp

코드

더보기
//
//  model.swift
//  iPhoneMemoApp
//
//  Created by SeoJunYoung on 2023/08/01.
//

import Foundation

class FolderSection:Codable{
    var sectionName:String
    var folderDatas:[FolderData]
    var isHidden = false
    
    init(sectionName:String, folderDatas:[FolderData]){
        self.sectionName = sectionName
        self.folderDatas = folderDatas
    }
}

class FolderData:Codable{
    
    var name:String
    var memoSection:[MemoSection]
    var count:Int
    
    init(name: String, memoSection:[MemoSection]) {
        self.name = name
        self.memoSection = memoSection
        self.count = memoSection.map{$0.memoDatas.count}.reduce(0,+)
    }
    
}

class MemoSection:Codable{
    var sectionName:String
    var memoDatas:[MemoData]
    var isHidden = false

    init(sectionName:String, memoDatas:[MemoData]) {
        self.sectionName = sectionName
        self.memoDatas = memoDatas
    }
}

class MemoData:Codable{
    
    var content:String
    var date:String
    var time:String
    var info:String
    var isPin = false
    
    
    init(content: String, time: String, info: String, date: String) {
        self.content = content
        self.time = time
        self.info = info
        self.date = date
    }
    
}