본문 바로가기

분류 전체보기

(77)
Swift에서 Framework 생성 및 사용 이전에 만든 클래스를 현재 진행 중인 프로젝트에서 사용하고 싶은 경우가 종종 있다. 이럴 때 해당 프로젝트에 원하는 클래스를 복사해서 사용할 수도 있지만, 매번 이렇게 복사는 것이 여간 귀찮은 일이 아니다. 그래서 지난 포스팅(https://taeminator1.tistory.com/37)에서 만든 Queue 클래스를 Framework로 생성하여 다른 프로젝트에서 사용하는 방법을 알아보고자 한다. 지난 포스팅에서 만든 Queue 클래스를 Framework로 생성하여 다른 프로젝트에서 사용하는 방법을 알아보자. 먼저 Xcode를 실행하고 "Create a new Xcode project"를 눌러 프로젝트를 생성하자. 자신이 원하는 플랫폼을 선택하고(지금은 macOS를 선택했다), "Framework & L..
[Swift] Linked List를 이용한 Queue 구현 Queue는 먼저 입력된 데이터가 먼저 출력되는 자료구조이다. 이러한 특성을 선입선출(FIFO: First-In Frist-Out)이라고 한다. 이러한 개념은 일상생활에서 쉽게 찾아볼 수 있기 때문에 Queue는 많이 사용되는 자료구조 중 하나이다. Swift에서는 기본적으로 Queue를 제공해 주지는 않아서 별도로 구현해 주어야 한다. 다양한 방법으로 다양한 종류의 Queue를 구현할 수 있는데, Array를 이용한 Queue의 구조를 살펴보자. 먼저 Array를 이용하여 일렬로 쭉 늘어선 모양의 선형 Queue를 구현할 수 있다. Queue에서 가장 먼저 입력된 데이터를 출력하는 함수를 pop이라고 하겠다. pop을 하는 방법에는 크게 두 가지가 있다. 첫 번째로 pop 연산 시에 Array의 첫 번..
[Swift] Linked List 구현 Linked List는 Array와 자주 비교되는 대표적인 자료 구조 중 하나이다. 메모리에 각각의 원소를 순차적으로 저장하는 Array와 달리, Linked List는 데이터와 링크로 구성된 노드를 이용하여 메모리에 저장된 순서와 상관없이 연결된 데이터 구조를 말한다. 각각의 사각형은 Node를 의미한다. Node는 데이터(채색되어 있지 않은 부분)와 링크(채색되어 있는 부분)로 나뉘는데 데이터에는 저장하길 원하는 값을 넣고, 링크에는 다음 노드를 가리키도록 하여 Linked List를 구현할 수 있다. Array와 Linked List는 각각 대비되는 장점이 존재한다. 먼저 Array는 사용이 쉽다. Swift를 포함한 대부분의 언어에서 Array를 기본적으로 제공한다. 특히 Swift의 Array는..
VoCap 개발 과정 새로운 앱이 출시가 되었다. 이번엔 iOS 앱이다. 공식적으로 두 번째 앱이라서 그런지 기대도 컸고 실망도 컸다. 그래서!! 추후 좋은 점은 극대화하고 같은 실수는 반복하지 않기 위해 개발 과정을 정리해보고자 한다. 2020년 12월에 시작해서, 2021년 2월 중으로 출시 계획을 세웠으나, 생각보다 해야 할 것이 너무 많아서 3월 중순이 되어서야 첫 출시를 했다. 다음은 전체적인 앱 개발 과정을 나타냈다. 실제 진행과정을 기반으로 작성해서 전통적인?? 개발과정과는 차이가 있을 수 있다. 다음과 같은 과정으로 개발을 진행했다. Rotate 360(첫 출시 애플리케이션)을 개발할 때는, 약간 질서 없이 부딪혔는데, 이번 프로젝트는 꽤 체계적으로 진행을 한 것 같다. 다음 포스팅부터 개발 과정을 간략하게 살..
Core Data에서 Transformable 데이터 활용하기 Swift 5 Xcode 12.2 iOS14.2 Application에 데이터를 저장하는 방법 중 하나로 가장 대표적인 것으로 Core Data를 뽑을 수 있다. Core Data에서는 기본적으로 아래와 같은 Data Type을 제공한다. bit 수에 따른, Integer나, String, 심지어 UUID까지 제공해서, 기본적인 App을 만들기에는 충분하다. 하지만 때로는 자신이 원하는 Data Type이 없는 경우도 있는데, 이를 위해 Transformable Type이 존재한다. Transformable으로 설정을 해도 Swift에서 제공하는 기정의 된 Data Type만 사용할 수 있지만, 개인이 만든 Structure가 본래 기정의 된 Data Type을 활용하므로, 크게 문제 되지는 않을 것이다..
Picker 사용시 주의점: data type Swift 5 Xcode 12.2 iOS14.2 Picker는 이름 그대로 데이터를 선택하는 방법을 제공 View이다. 아래 간단한 Picker 예제를 살펴보자. import SwiftUI struct PickerExView: View { let colors: [Color] = [.red, .orange, .yellow, .green, .blue, .purple] let colornames = ["Red", "Orange", "Yellow", "Green", "Blue", "Purple"] @State var selectedColorIndex: Int = 0 var body: some View { VStack { Picker("Color", selection: $selectedColorIndex) { F..
저장 속성(Stored Properties), 계산 속성(Computed Properties) Swift에서 속성을 선언하는 방법은 크게 저장과 계산 속성으로 구분 지을 수 있다. 가장 쉽고 간단하게 선언할 수 있는 저장 속성(Stored Properties)은 변수나 상수에 값을 저장할 때 사용한다. 다른 언어에서 제공하는 기본적인 속성과 크게 다르지 않아 가장 익숙한 속성이다. Swift에서 저장 속성을 선언하는 방법은 다음과 같다. var [변수 이름]: 자료형 ex) var storedNum1: Int let [상수 이름]: 자료형 ex) var storedNum2: Int 변수는 말 그대로 변하는 값을 저장하기 위한 속성이고, 상수는 변하지 않는 값을 저장하기 위한 속성이다. 이 둘은 서로 구분해서 사용하는 것을 권고하는데 이유는 다음과 같다. 첫 번째, "안전한 프로그래밍을 위해" 상수..
0-1. 구동 영상과 고찰 드디어, 구동 영상이다. 참고로, Actuator의 왕복 시간은 2분 정도가 소요되는데, 영상이 길어져 중간에 편집했다. 소음은 생각보다 있는 편이지만, 옆집에 들릴 수준은 아닌 것 같고, 집에 있을 때 Actuator를 동작시킬 일이 없어 크게 상관없을 것 같다. 또 눈여겨볼 것은, 아이폰 네트워크가 LTE에 연결되어 있다는 것이다. 이제 LTE가 연결되는 어디에서든(혹은 인터넷이 가능한 어떤 것에서든) HRC를 구동시킬 수 있다. 실내에서 수십 번 시연했지만, 실제로 밖에서 동작시켜 본 것은 어제가 처음이었다. 문을 열기 전에 살짝 긴장되었지만, 굳게 닫힌 창문과 선선한 실내 공기가 온몸에 전율을 일게 했다. 확인해 보니까 HRC프로젝트와 관련된 첫 포스팅이 약 2달 전에 이루어졌던데, 2달 동안 정..