카테고리 없음

23.08.31 init에 대한 개념정리 / todolist 글 저장 기능구현

oong2 2023. 9. 1. 01:02

 

init은 초기화 인스턴스이다.

근데 난 초기화라는 말만듣고 뭘 초기화한다는거지?? 

저걸 왜 초기화한다는거지?? 잘 이해가 되지않았었다.

 

이번 장바구니 코드를 짜면서 init을 활용할 수 있음에 다시 그 개념에대해 공부를 해보았는데, 

 

위와 같이 init 을 쓰지않는다면 아래의 product들 5개가 모두 출력되는것이아닌 , 

한가지만 출력이된다.

 

그 이유는 print("\(self.name)","\(self.price)원") 이라는 코드가 product 코드들을 한줄한줄 읽어가며 프린트문을 수정하다가

결국 맨 아래에있는 snack을 받아 그것으로 출력을 하기 떄문이다.

 

그렇기 때문에 snacks 안에있는 5가지를 모두 출력해주려면 

프린트 문의 name과 price를 받고있는 모든 let문들을 출력후 초기화 , 출력후 초기화 하며 하나하나 출력해주는 것이다.

 

init에 대해 아무것도 몰랐었는데 이번 기회로 많이 공부했다.

 

 

그리고 만들고있는 todolist의 구현화면,

이번엔 +버튼을 누르면 글을 추가할 수 있고 , 그것이 userdefaults ( 기기에 저장 ) 으로써 잘 작동하고있음이

시뮬레이터를 끄거나 나갔다왔을때 정보가 저장되어있음으로 확인할 수 있었다.

 

허나 가장 헤맸던 부분은

 

 

class tableViewCell1: UITableViewCell{

    static let reuseIdentifier = "Cell"

}

 

이 코드를 만드는 과정에 있었는데, 

 

+버튼을 누르면 alert가 뜨고 textfield까지 생성되며 글작성 , 등록버튼 활성화 까지 되는 상태였지만, 

기존에 실제 등록이 되지는 않는상태여서

 

실제 등록이 되기위해 여러가지 코드를 집어넣고 실행한결과 Cell identifier 오류가 나는것이었다.

 

생각해보니 저번에 스토리보드로 앱을 제작할때는 스토리보드 자체에서 identifier를 지정해 주었었지만

코드로 짤때는 identifier를 따로 지정해주지않은것같아, 그럼도대체 코드로는 어떻게 지정해주는걸까 라는 고찰에서

여러 정보를 찾다 찾다가 찾은 결과가 위의 코드였다.

 

저 코드를 선언하기 이전에는 identifier값이 nil로 출력되었었는데 ,

그게 기초에 tableViewCell이 가지고있는 identifier 가 없기 때문이라고 한다.

그래서 저런식으로 선언해주면 되는데 ,

문제가 나중에가면 UITableViewCell자체를 상속받아서 CustomCell을 만들때 문제가 생길 수있다고 하여

이부분에대해서도 추가적인 고민이 필요할 것 같다.