전체 글

전체 글

    [Core Data] TableView와 Navgation Cotroller을 임베디드 하기

    [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를 생성하는 방법

    [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란?

    [Core Data] Context란?

    Context는 CoreData로 관리되는 DB와 application 사이를 연결해주는 Area 개념으로 이해하면 쉽다. Context를 학습하기 전에, CoreData와 DB(SQLite)의 관계에 대해서 먼저 이해해야 한다. CoreData는 DB가 아니라 Framework이다! 이렇게만 이야기하면 CoreData를 처음 공부하는 사람들은 당연히 무슨 말인지 하나도 이해하기 힘들 것이다. (내 이야기다...) 쉬운 이해를 위해, 실제 CoreData와 함께 사용되는 SQLite (

    [Swift] lazy 변수란? - 애플개발자 문서가 수정됐다!

    [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 탐구

    [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)을 가장 기초부터

    [Swift] 프로토콜(Protocol)을 가장 기초부터

    iOS/MacOS 앱을 만들다 보면, 객체 지향형 언어를 많이 다루어 본 사람들도 처음 보는 것이 있다. 바로 Protocol 과 Delegate 이다. 나의 경우는 직전에 WKWebview를 사용하는 Hybrid 앱 개발을 할 때 firebase FCM을 이용하면서, 직접 정의한 push 알림을 구현하기 위해서 AppDelegate.swift를 심도 있게 다루어야 했지만, Delegate가 무엇인지 이해하지 못한채로 작업을 시작했었기 때문에 정말 오래 걸렸던 경험이 있다. Delegate를 이용하기 위해서는 먼저 Protocol을 이해해야 한다. 먼저 Protocol을 설명한 후, Delegate는 다음 장에서 설명하도록 하겠다. 1. 그럼 Protocol이 뭐야? 구글링을 해보면 많은 사람들이 Pro..

    [애플 Document 번역] Core Data

    [애플 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'

    [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..

    [WKWebView] Can't find variable: webkit, undefined is not an object(evaluating 'window.webkit.messageHandlers) error 해결 방법

    [WKWebView] Can't find variable: webkit, undefined is not an object(evaluating 'window.webkit.messageHandlers) error 해결 방법

    1. 문제 상황 하이브리드 앱 프로젝트를 진행하던 도중, WKwebview 에서 보여주는 web js 파일에서 native 앱으로 DB 관련한 파일을 전송해야 하는 작업을 해야 할 일이 생겼다. 정말 iOS에 엄청난 생초보로서 처음 해보는 부분이었지만, stackoverflow와 블로그의 도움을 받아 쓱쓱 해가는 중이고, 나름대로 와 이렇게 체계적으로 잘 만들어져있구나! 끄덕끄덕 하면서 기능을 추가해나갔다. 가장 깔끔하게 정리되어 있는 블로그이니 이 기능 구현 해보고싶은 분들은 따라해봐도 좋을 것 같다ㅎㅎ https://oingbong.tistory.com/225 WKWebview를 이용한 Javascript, Swift 양방향 통신 아래 작성된 방법은 WebView 가 로드될 때 실행되는 것을 기준으로..