어코모 :: 2021 하계 모각코 6회차 결과

문다연·2021년 8월 12일
0
post-thumbnail

6회차 8/11(수)
🤍 목표

📂 동적으로 식단 기록하기
	- 동적으로 내용을 작성하여 셀 추가하기
    - 날짜 클릭 시 일자별로 데이터 관리하기
    - (추가) 뷰 커스텀하기

🤍 결과
8/7(토) ~ 8/11(수) 진행 기록

📂 동적으로 식단 기록하기
    - 동적으로 내용을 작성하여 셀 추가하기

1️⃣ 셀을 추가하는 Add 버튼 추가
2️⃣ 셀의 내용을 작성해줄 텍스트필드 추가

3️⃣ 버튼을 누르면 취해줄 액션에 대한 코드 작성

'입력'이라는 단어로 입력창임을 나타내주려고했는데 이미 입력되어 있는 문자열로 인식된다. 이 부분을 수정해주어야 할 것 같고,

Add 버튼을 누르면 [저녁] 카테고리에 잘 추가되는 것을 확인 할 수 있다!
그러면 이제 아침 / 점심 / 저녁 / 기타(타이틀 설정) 중 카테고리를 설정하고 식단을 기록할 수 있도록 해보자

삼시세끼를 잘 챙겨먹자는 느낌으로 아침점심저녁 카테고리는 고정하고 기타 부류도 추가했다(는 사실 간단하게 구현하고싶어서 .. 나중에 분명 맘에 안들어서 수정하러 돌아올 것 같은 부분🧐)

코드도 별거없다 SegmentControl로부터 넘겨받는 값을 매개인자로 추가해주어 아침식사면 카테고리의 인덱스가 0이므로 아침 식단에 대한 배열에 데이터를 추가하고, 해당 섹션을 리로드해주면 된다.

+) 나중에 보니 reloadData가 아닌 reloadSections 함수를 사용하는 것은 추가할때마다 테이블을 reload하는 데에 메모리 낭비가 크기 때문인데, 위처럼 모든 섹션을 reload하면 다를게 뭔가!
각 케이스별로 해당하는 섹션만 reloadSections하도록 해주었당
실행해보면서 메모리랑 디스크 사용량의 변화를 보긴했는데.. 데이터가 많지않아서인지 큰 차이는 잘 모르겠다.... 더 나은 코드인지 확신하지는 못하는중

- 날짜 클릭 시 일자별로 데이터 관리하기

일자별로 데이터를 관리하려면 아무래도 데이터베이스를 기반으로 다뤄야할 것 같다. 나와 비슷한 라이브러리를 이용하여 프로그램을 만들고 있는 개발자들의 프로그램을 보다보니 Realm이라는 플랫폼을 이용하고 있더라. 그래서 이 디비를 이용해보기로 했다!
cocoapod이 설치되어있다는 가정 하에 podfile을 열어 파일에 pod 'RealmSwift'를 추가하고 pod install 해주면 된다.


Realm Object

Realm은 객체 컨태이너로 동작하기 때문에 object를 생성해주어야 한다.
생성 방법 1. class로 구성
2. 각 변수 앞에 @objc dynamic을 붙임

import Foundation
import RealmSwift

class DataRealm: Object{
    @objc dynamic var year = ""
    @objc dynamic var month = ""
    @objc dynamic var day = ""
    @objc dynamic var log : [String] = []
}

라고하면 Could not build Objective-C module 'RealmSwift'라는 오류가 뜬다.
이거는 Xcode > Product > Schemes > New Scheme... > RealmSwift 선택 후 확인하면 해결됨!💡

Realm 데이터 추가

realm.write{ realm.add(Object) }

Realm 데이터 삭제

realm.write{ realm.delete(Object) }

Realm 데이터 조회

Object 형태로 저장, 조회할 수 있음. 정렬 및 필터 기능

위의 기능들을 구현해야하는데..! 구상없이 갑자기 데이터베이스를 구현하려니 번잡해졌다 .... 롤백하고 일단 이번 모각코를 이전단계까지 상태에서 마무리하고 추후 추가해야할 것 같다

참조
오늘의 성취도 ⬜️🟩
오늘의 성취도 깃허브 🐼🐸
DB 💾 :: Realm
Realm 기본 사용법 1
Realm 기본 사용법 2
Realm Notification

profile
ios-moon.tistory.com 이전했어요 🚛

0개의 댓글