Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- CarouselCollectionview
- Reference Cycle
- Carousel CollectionView
- ReferceCycle
- tableview section별 다른 cell적용
- 양궁대회
- 면접을 위한 CS 전공 지식 노트 Tree
- til
- NavigationSearchBar
- 면접을 위한 CS전공 지식 노트
- Value Type Reference Type
- SWIFT
- TableView Section
- 롤케이크 자르기
- retain cycle
- Input Output
- 테이블뷰 나누기
- coremotion
- class struct
- wil
- Array vs Linked List
- 프로그래머스
- UserDefaults
- firebase
- TableView
- 자료구조
- CoreData
- @escaping
- 강한 참조 순환
- UIKit
Archives
- Today
- Total
개발하는 동글 :]
[TIL],[UIKit],[UserDefaults사용] 본문
Why?
- memo앱을 종료한 후 재실행 하였을 때 데이터가 없어지는 문제가 있음
TIL
UserDefaults 를 사용하기로 함
1. 저장할 데이터의 모델에 Codable 프로토콜을 채택한다.
class FolderSection:Codable{
var folderDatas:[FolderData]
}
class FolderData:Codable{
var memoSections:[MemoSection]
}
class MemoSection:Codable{
var memoDatas:[MemoData]
}
class MemoData:Codable{
var content:String
var date:String
var info:String
init(content: String, date: String, info: String) {
self.content = content
self.date = date
self.info = info
}
}
2. encoder와 decoder 프로퍼티를 선언한다.
let encoder = JSONEncoder()
let decoder = JSONDecoder()
3. dataManager클래스에 setData와 loadData 메서드를 만들어 준다.
func setData(){
if let encoded = try? encoder.encode(data){
UserDefaults.standard.set(encoded, forKey: "Memo")
}
}
func loadData(){
if let data = UserDefaults.standard.object(forKey: "Memo") as? Data,
let manager = try? decoder.decode([FolderSection].self, from: data) {
self.data = manager
}
}
4. viewDidLoad내에 dataManager의 loadData 메서드를 호출해 준다.
var dataManager = DataManager()
override func viewDidLoad() {
super.viewDidLoad()
dataManager.loadData()
}
dataManager를 이용하여 마구마구 사용한다~!