위시리스트 만들기
이번 개인 과제에서는 JSON을 사용하여 CoreData에 데이터를 저장하는 것을 주제로 위시리스트를 구현하게 되었다. 제일 먼저 JSON을 살펴봤는데 익숙한 형식이라 그나마 다행이었다. 다만, CoreData는 처음이라 좀 막막했다.
아니나 다를까 문제가 발생했는데,
사건의 발단은 이러했다.
{
"id": 1,
"title": "iPhone 9",
"description": "An apple mobile which is nothing like apple",
// 생략
}
JSON에 있던 저 description을 CoreData의 속성값으로 그대로 집어넣은 결과 아래와 같은 문구가 나를 반겼고
Property name clashes with a method implemented by NSManagedObject or NSObject
이 에러를 그대로 번역기에 돌려보니,
속성 이름이 NSManagedObject 또는 NSObject에 의해 구현된 메서드와 충돌합니다.
어... 그래, 무슨 소리인가 싶었다. 그래서 다시 그대로 구글링을 시도했는데 아래와 같은 답변을 찾을 수 있었다.
그러니까 요약하자면 description이라는 이름은 CoreData의 속성으로 지정할 수 없다는 소리였다.
그래도 이때까지는 괜찮았다. 늘 하던 대로, 늘 그렇듯이 나는 이게 Swift라는 걸 망각했다.
WOOD: 그 이름 자체로 안 되면 이름을 바꿔서 넣으면 되잖아?
SWIFT: 응 아니야, 돌아가~
WOOD:
사실 이때 이런 생각을 해봤다.
id, title과 같은 데이터의 고유한 값만 CoreData에 저장한 후 사용자가 저장된 데이터를 원할 때 고유한 값을 이용해 JSON에 다시 서버통신을 요청, 다시금 해당 데이터를 받아와 보여주면 어떨까?
과제의 목적과 다르다.
튜터님한테 빠꾸 당했다.
그래서 나는 다시 구글링을 했다. 구그라... 나 좀 살려줘...
결론을 말하자면, '이름을 바꿔서 넣으면 되잖아'라는 생각이 맞았다. 방법이 틀렸을 뿐.
해결도 완료. 굉장히 뿌듯하다. Codable 공부와 적용하는 시간 다 합쳐 이틀 꼬박 걸렸다는 것만 빼면 말이다.