-
iOS - memo 앱 만들기 # 11 DB구현2iOS 2020. 12. 16. 11:38
DB구현2
[DataManager.swift]
func addNewMemo(_ memo:String?){ // 메모는 Core Data가 만들어준 데이터기 때문에 생성자 파라미터로 context를 던져줘야 한다. // 이렇게하면 DB에 메모를 저장하는데 필요한 비어있는 인스턴스가 생성 let newMemo = Memo(context:mainContext) // 비어있으니까 값을 채우자 // 이렇게 한다고 바로 db에 저장되는 것이 아니고 저장하려면 context를 저장해야 한다. newMemo.content = memo newMemo.insertDate = Date() // context를 저장하는 메소드는 아래쪽에 saveContext()로 구현되어 있기때문에 가져다 쓰면됨 saveContext() }
[ComposeViewController.swift]
@IBAction func save(_ sender: Any) { guard let memo = memoTextView.text, memo.count > 0 else{ alert(message: "메모를 입력해주세요") return } // let newMemo = Memo(content: memo ) // Memo.dummyMemoList.append(newMemo) DataManager.shared.addNewMemo(memo) NotificationCenter.default.post(name:ComposeViewController.newMemoDidInsert, object: nil) dismiss(animated: true, completion: nil) }
이렇게 해도.. 안될거같은데.. willAppear 메소드는 호출 안된다고 했는데..
역시나.. 메모를 쓰고 저장을 눌러도 반응이 없어 디비에 저장이 안됬나 하고 다시 앱을 실행해보니까 db에는 정상적으로
들어가 있는 것을 확인할 수 있다.
그래서 이전단계에서도 메모를 저장하면 Notification을 전달하고 observer를 추가한다음 table.reload를 하게 구현
흐음..
[DataManager.swift]
func addNewMemo(_ memo:String?){ // 메모는 Core Data가 만들어준 데이터기 때문에 생성자 파라미터로 context를 던져줘야 한다. // 이렇게하면 DB에 메모를 저장하는데 필요한 비어있는 인스턴스가 생성 let newMemo = Memo(context:mainContext) // 비어있으니까 값을 채우자 // 이렇게 한다고 바로 db에 저장되는 것이 아니고 저장하려면 context를 저장해야 한다. newMemo.content = memo newMemo.insertDate = Date() memoList.insert(newMemo, at: 0) // context를 저장하는 메소드는 아래쪽에 saveContext()로 구현되어 있기때문에 가져다 쓰면됨 saveContext() }
내가 생각했던건 아예 뜯어 고치는 거였는데 사실 왜 안됐는지는 간단했다 table이 미리구현 한 observer에서 load를 제대로 하고 있긴
했는데 memoList에 저장하는 값이 바로바로 안들어가서 저장 직후에는 안보이는 것이였다..
위에처럼 memoList.insert()를 써서 맨앞에 삽입해주면 끝
* 배열 맨뒤에 넣으려면 append
'iOS' 카테고리의 다른 글
ios - fcm 메세지 전송시 400 error (0) 2020.12.30 iOS - push 기능 설정 (0) 2020.12.23 iOS - memo 앱 만들기 #10 DB 구현 1 (0) 2020.12.15 iOS - memo 앱 만들기 #9 선택 기능과 줄바꿈 구현 (0) 2020.12.15 iOS - memo 앱 만들기 #8 데이터 전달 (0) 2020.12.15