iOS

iOS)메모장 앱 만들기(1)

hoonsbrand 2022. 3. 22.

Angela의 iOS강의 섹션 19는 앞전의 포스팅에서 보이듯이 todo list 앱을 만든다.
전체적인 앱의 형태는 완성 되었고 앞으로는 외부 라이브러리를 사용하여 앱을 발전시킬 것이라고 예고를 하였는데, 그전에 이번에 배운 것을 바탕으로 복습을 권유하였다!

 

그래서 todo list 앱의 범주에서 크게 벗어나지 않다고 생각하여 메모장 앱을 만들기로 했다!

사실 코드를 작성하면서 포스팅 작성을 하려 했는데, 그전에 계획도 짜고 하면 좋을거같아서 작성하는 중이다..

 

 

 

"어떤 기능을 가진 앱을 만들까?"

필자의 메모장 앱 개발의 주 목적은 CoreData와 아직도 살짝 헷갈리는 tableView와 더 친해지기 위해서이다!

그래서 메모장 최소한의 기능만 구현할 예정이다.

 

  • 아이폰 메모장처럼 첫 화면이 메모 목록들로 설정
  • 메모 삭제는 메모장 안에서만 가능
  • 메모의 첫번째 줄이 메모장의 제목으로 설정

 

단계별로 계획을 세워서 글을 작성하려 했으나 아직 감이 안 잡혀서 이제부터는 구현을 하며 작성을 할 예정이다.

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

 

일단 DataModel은 하나씩 구현할건데, 먼저 하나의 메모를 작성하는 기능을 구현할 것이고, 앞서 배운 카테고리화를 이용해 여러 메모들을 작성할 수 있게 만들 것이다.

메모장의 내용은 content로 attribute를 주었다.

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"
AppDelegate

처음에 프로젝트 파일을 생성할 때 CoreData 사용을 체크해주었기 때문에 AppDelegate에 CoreData와 관련된 변수와 메서드들이 작성이 되어있다. 또한 DataModel 파일의 이름을 Model로 변경해주었기 때문에 혹시라도 파일의 이름을 바꾸었으면 let container부분에 name부분을 수정해주자!

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

메모장 작성 UI를 대충 만들어봤는데 일단 메모장이니까 글 쓸 공간이 필요하다!

 

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

한 줄만 사용하는 메모장을 만들건 아니니 Text View로 넣어준다.

 

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

메모 내용이 양옆으로 너무 붙어있으면 불편할 거 같아 20으로 간격을 주었다.

 

 

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

짜잔.. 은 아니고 갈길이 멀다.. 이 포스팅도 과연 보는 사람들한테 도움이 될지.. 내가 봐도 정리가 잘 안 되는 느낌이지만 하다 보면 괜찮아 질거라 생각한다!!

 

일단 실행을 해볼까....

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

흠 Memo 클래스를 초기화하는 데에 문제가 있다고 하는 거 같은데.. 그러면 ContentViewController에 선언한 memoContent와 관련이 있어 보인다.

공식문서를 봐도 왜 문제가 되는지 잘 몰라서 스택오버플로우에 검색을 해봤다.

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

https://stackoverflow.com/questions/33301250/resolving-failed-to-call-designated-initializer-on-nsmanagedobj ect-class

 

흠... 나와 같은 식으로 선언을 한 사람이 있다. 답변자의 말에 따르면 currentCourse는 단순히 Course 타입으로 되게 선언을 하는 것뿐만 아니라 Course entity의 instance를 생성하고 그 instance는 init메서드를 기본으로 사용한다고 한다.
그 말은 즉슨
init(entity entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)

이런 식으로 선언을 하거나 optional로 선언을 해서 기본값이 필요 없게 하고 필요할 때만 unwrap을 하라고 한다.

그래서 일단은.. 그대로 optional로 선언을 하고 다시 실행을 해봤다.

 

 

 

 

iOS)메모장 앱 만들기(1) - undefined - "어떤 기능을 가진 앱을 만들까?"

에러 없이 실행은 되지만 여기서 두 가지 의문점이 생겼다.

1. 왜 NavigationBar가 안보일까? 

2. todoList프로젝트에서 NSManagedObject 선언할 때는 var itemArray = [Item]으로 선언했는데 왜 문제없이 실행된 거지?

 

 

 

 

 

 

1. NavigationBar 나타내기

구글링을 하기 전에 todoList 프로젝트와 비교를 해봤다.

 

iOS)메모장 앱 만들기(1) - undefined - 1. NavigationBar 나타내기
todoList

 

 

iOS)메모장 앱 만들기(1) - undefined - 1. NavigationBar 나타내기
Memo

뭔가 다른 점이 보이는가?? 

바로 Navigation Controller가 StoryBoard Entry Point 즉, 진입점으로 표시가 안 돼있었다! 저기 저 왼쪽에 화살표 있는 거

내가 실수로 체크를 해제했나..

어쨌든 Navigation Controller의 진입점이 없으니까 의미가 없던 Navigation Controller와 Bar 였던 것이다.

다시 돌아와서 is Initial View Controller에 체크해주고 실행..

 

iOS)메모장 앱 만들기(1) - undefined - 1. NavigationBar 나타내기

NavigationBar가 잘 나온다! StatusBar까지 색이 안 입혀지는 게 불만이지만 디자인은 마지막에 수정하기로 했다.

 

 

 

 

 

2. NSManagedObject 선언

궁금증: Memo 프로젝트에서는 옵셔널로 선언해야만 실행이 되고 todoList에서는 init형태로 했는데 문제가 없었다. 왜??

 

 

는 다음포스팅에서...!

 

 

'iOS' 카테고리의 다른 글

iOS)메모장 앱 만들기(4)  (0) 2022.03.25
iOS)메모장 앱 만들기(3)  (0) 2022.03.24
iOS)메모장 앱 만들기(2)  (0) 2022.03.24
iOS) NSManagedObject  (0) 2022.03.23
iOS) NSPredicate - 사고방식 바꾸기  (0) 2022.03.20

댓글