iOS 개발
![[Core Data] Entity의 Name Attribute들을 Cell에 표시하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Y94Q%2FbtrvE5jvn5o%2FuDlumnzVkkqpyTyz2GoOR0%2Fimg.png)
[Core Data] Entity의 Name Attribute들을 Cell에 표시하기
3. Entity의 Name Attribute들을 Cell에 표시하기, SQLite Editor 다루기 TableView를 많이 다루어보지 않았다면, 준비 과정부터 꽤 어려웠을 것이다. (나는 어려웠다...ㅜ) 지금 하는 부분은, 이전 부분보다 더 쉽지는 않을 것이다. CoreData가 처음이라면 새로운 것 투성이일 테니 말이다. 하지만, 차근차근히 읽어보고 이해 안가는 부분은 한번 더 읽고 따라해본다면 분명히 CoreData를 더 잘 이해할 수 있을 것이다. 먼저 CategoryViewController.swift 파일을 열자. 먼저 Categories 라는 변수를 만들고, 그 안에 방금 생성했던 Entity 의 이름으로 배열을 만들어주자! Category라는 클래스를 배열로 생성한 것이다. var c..
![[Core Data] TableView와 Navgation Cotroller을 임베디드 하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzdj3U%2FbtrvDg0ma3Y%2FUAw8UwFU1xEKEjLbZrbJK1%2Fimg.png)
[Core Data] TableView와 Navgation Cotroller을 임베디드 하기
2 . TableView를 만들고, Navgation Cotroller을 임베디드 하기 잠시 CoreData를 떠나서 View와 Controller에만 집중해보는 시간이다. 조금 더 자세히 이야기하자면, 우리는 TableViewController를 만들어서 TableView를 이용할 건데, 각 Cell에 우리가 만들었던 Attribute들을 Cell에 표시해보기 위해서 TableView 를 이용할 것이다. 또한 add Button 을 넣기 위해 Navigation Controller 또한 임베드 할 것이다. 일단 ViewController.swift를 삭제한다. 우리는 이게 필요없다. 그 다음, StroyBoard에서 ViewController Scene 이것도 삭제해준다. 그럼 텅빈 화면만 남게 될 것..
![[Core Data] Entity와 Attribute를 생성하는 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc10861%2FbtrvEHb8tC1%2FyAIV6GPDdGkhVKp6Ja4Lu0%2Fimg.png)
[Core Data] Entity와 Attribute를 생성하는 방법
아직 Core Data가 무엇인지 모른다면 CoreData 개발자문서 번역 , Context란? 를 각각 클릭해서 보고 오자. Core Data 다른 관련된 자료들을 구글링 해서 보고오면 또 큰 도움이 될 것이다. 0. 프로젝트 준비하기 Xcode 에서 create new Project를 선택 한다. 그 다음 iOS 항목에서 App 을 선택해 준 후, 환경설정은 왼쪽과 같이 설정해주면 된다. 이름과 팀, 조직식별자는 편하게 설정해도 되지만, 아랫 부분, 특히 Use Core Data는 꼭 체크해주도록 하자. (나중에 CoreData를 추가할 수 있지만, 귀찮으니...) 1. Entity와 Attribute 생성 엑셀을 한번이라도 다루어 본 적이 있다면, DB가 Table과 Field로 이루어져 있다는 것..
![[Core Data] Context란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCvgYR%2FbtrvF3rNMkZ%2F4Qjkgme15pc8iLApeHquJK%2Fimg.png)
[Core Data] Context란?
Context는 CoreData로 관리되는 DB와 application 사이를 연결해주는 Area 개념으로 이해하면 쉽다. Context를 학습하기 전에, CoreData와 DB(SQLite)의 관계에 대해서 먼저 이해해야 한다. CoreData는 DB가 아니라 Framework이다! 이렇게만 이야기하면 CoreData를 처음 공부하는 사람들은 당연히 무슨 말인지 하나도 이해하기 힘들 것이다. (내 이야기다...) 쉬운 이해를 위해, 실제 CoreData와 함께 사용되는 SQLite (
![[Swift] lazy 변수란? - 애플개발자 문서가 수정됐다!](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE2pob%2FbtrvFe8aiVz%2FTSDFBQ1T9WDokHygvbKJr1%2Fimg.png)
[Swift] lazy 변수란? - 애플개발자 문서가 수정됐다!
우리는 종종 변수 앞에 lazy가 붙는 경우를 볼 수 있다. 나 또한 lazy 변수를 몇번 마주쳤지만, 다른 부분에 정신없는 와중이어서 대충 "메모리를 필요할 때만 쓰게 해주는 역할이다" 정도로만 이해하고 지났쳤지만, 이번에 Core Data를 공부하던 중, lazy var persistContainer 라는 변수를 보고, lazy가 무엇인지 공부를 시작했다. 애플 공식 문서에서 lazy 는 다음과 같이 설명되어 있는데 Apple Developer Documentation developer.apple.com A sequence containing the same elements as this sequence, but on which some operations, such as map and filter,..
![[Core Data] Entity Class 설정 - Codegen option 탐구](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfIaJI%2FbtrvCmmgJTj%2FB9M3JTpE8nmBUmKBaD5k31%2Fimg.png)
[Core Data] Entity Class 설정 - Codegen option 탐구
우리가 Core Data를 처음 마주하여 Entity를 생성하면, 이 Entity(Class)에 대해 Name과 Module과 Codegen을 설정해야 한다. Class Name은 Entity를 Class로 다룰 때 사용할 이름으로 어렵지 않았지만, Module과 Codegen은 그냥 봐서는 잘 이해가 가지 않았다. 마찬가지로 어려움을 느끼는 사람들이 있을 것 같아서 이 블로그 글을 작성하게 되었다. 1. Entity Class 설정 먼저 Entity는 Core Data가 관리하는 객체를 의미한다. 우리가 일반 코드를 다룰 때 이용하는 Class, DB를 다룰 때 이용하는 Table과 개념이 비슷하다. Entity를 생성한 후에는 새로 만들어진 Entity를 어떻게 사용할 건지 설정해 주어야 한다. 먼저..
![[Swift] 프로토콜(Protocol)을 가장 기초부터](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft9qTP%2FbtrvIyFV5b9%2FxkYb5FIOM1JuohkeaKkaf0%2Fimg.png)
[Swift] 프로토콜(Protocol)을 가장 기초부터
iOS/MacOS 앱을 만들다 보면, 객체 지향형 언어를 많이 다루어 본 사람들도 처음 보는 것이 있다. 바로 Protocol 과 Delegate 이다. 나의 경우는 직전에 WKWebview를 사용하는 Hybrid 앱 개발을 할 때 firebase FCM을 이용하면서, 직접 정의한 push 알림을 구현하기 위해서 AppDelegate.swift를 심도 있게 다루어야 했지만, Delegate가 무엇인지 이해하지 못한채로 작업을 시작했었기 때문에 정말 오래 걸렸던 경험이 있다. Delegate를 이용하기 위해서는 먼저 Protocol을 이해해야 한다. 먼저 Protocol을 설명한 후, Delegate는 다음 장에서 설명하도록 하겠다. 1. 그럼 Protocol이 뭐야? 구글링을 해보면 많은 사람들이 Pro..
![[애플 Document 번역] Core Data](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FebvBEA%2FbtrvH0uLfoD%2FKk4ScTP4CCKJKI8dJpp7x1%2Fimg.png)
[애플 Document 번역] Core Data
Apple Developer Documentation developer.apple.com Core Data 데이터를 하나의 디바이스에 유지하거나 캐시하고, 혹은 CloudKit을 이용해서 여러 대의 기기에 데이터를 동기할 수 있게 해줍니다. 개요 Use Core Data to save your application’s permanent data for offline use, to cache temporary data, and to add undo functionality to your app on a single device. To sync data across multiple devices in a single iCloud account, Core Data automatically mirrors you..
![[WKWebview] webkit에서 보낸 message.body 형변환 방법, Could not cast value of type 'NSTaggedPointerString' to 'NSNumber'](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX48Ss%2Fbtrb6Ubxf0Y%2FOteykjDuH8UXmA0EcNNwv1%2Fimg.png)
[WKWebview] webkit에서 보낸 message.body 형변환 방법, Could not cast value of type 'NSTaggedPointerString' to 'NSNumber'
1. 문제 상황 나의 경우에는 value 라는 js 변수의 값을 swift의 네이티브로 넘겨주는 작업을 진행 중이었다. value에는 1 이나 2와 같은 int 형 값이 들어간다. webkit.messageHandlers.updateFollowStatus.postMessage(value); // JavaScript 파일 axios({ method: 'post', url: btnUrl, data: { userId: currentUserID, followValue: value, }, }) .then((res) => { section_display_change(btnId); if (btnUrl === 'follow') { if (isMobile.iOS()) { webkit.messageHandlers.upda..