Swift
-
Swift - MarkdownSwift 2021. 10. 20. 21:52
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift의 Markdown에 대해 학습해보겠습니다💁🏻 Markdown은 다들 아실겁니다. 간단히 말하자면 서식 있는 텍스트를 작성하기 위한 공통 언어입니다. 깃헙 리드미에서도 많이 보셨을거에요🧐 그런데 Swift - Markdown은 도대체 무엇인지 알아봐야겠어요..! SwiftUI 3.0으로 업데이트 되면서 즉 iOS15부터 애플에서 Foundation 프레임워크와 SwiftUI에서 이 마크다운을 제공해줍니다!! 얘네들이 마크다운 라이브러리를 만들어버렸어요😁 정말 그럼 딥하게 파고들며 설명하기전에 어떤건지 맛볼까요? 간단한 Markdown의 사용 예시 맛보기 import SwiftUI struct ContentView: View { var body: some..
-
KeyPathSwift 2021. 9. 4. 10:34
안녕하세요. 그린입니다🟢 이번 포스팅에서는 KeyPath에 대해 학습해보겠습니다🧑🏻💻 KeyPath? 아.. 계속 영어로 치기 귀찮은 한국인이라 요기서부터 본문은 키패스라고 타이핑하겠습니다! 키패스를 왜 학습하게 되었나하면 Composable Architecture를 실무에서 사용하면서 하위 리듀서를 상위 리듀서에서 가져와 액션을 구현할때가 있습니다. 음.. 예를들어 모두 홈 모듈에 지도뷰 모듈도 있고 리스트 모듈도 있다고 쳤을때 지도뷰 모듈에서 어떤 에러가 발생하면 홈 모듈에서 얼럿을 띄워줘야 하는 경우를 가정할 수 있습니다. 그러니까 모듈간 종속을 보면 이렇게 되겠네요! 으.. 만들고 보니 징그럽지만 무튼 이렇습니다. 다양한 하위 모듈이 Home 모듈에 속해있죠? 이럴때 홈 모듈에서 하위 모듈의 상..
-
Dictionary.init(uniqueKeysWithValues:)Swift 2021. 8. 31. 19:30
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Dictionary.init(uniqueKeysWithValues:)에 대해 학습해보겠습니다💁🏻 딕셔너리가 뭐에요?? 우선 딕셔너리는 key와 value로 이루어진 데이터를 담는 컨테이너입니다. 특징이라하면 각 value는 고유의 유일한 key와 연결되어 있습니다. 딕셔너리는 array처럼 순서가 있지 않기에 각 물려있는 key값으로 value값을 찾을 수 있습니다. 즉 딕셔너리를 표현한다면 Dictionary로 표현할 수 있습니다📑 그렇다면 딕셔너리의 키값은 고유의 값이니 Hashable 해야겠쬬!? 그런데 우리가 쓰는 딕셔너리의 키값은 대부분 swift에서 기본 제공하는 Int, String, enum 등등일겁니다! 해당 기본제공되는 자료형 타입들은 이미 H..
-
순수함수와 사이드이펙트Swift 2021. 8. 22. 13:29
안녕하세요. 그린입니다🟢 이번 포스팅에서는 정말 정말 간략하게 순수함수와 사이드이펙트에 대해 알아보겠습니다🧐 다들 순수함수와 사이드이펙트는 들어보셨을거라 생각해요! 저도 막연하게 어떤거다~~ 하는것만 알고 제대로 사용하진 못했던것 같아요. 음.. 앱을 개발하면서 객체지향 중심적으로 사고가 박혀있어서인지 순수함수를 쓰려던 부분은 고작해야 클로저로 처리하거나 통신할때 등 틀에 박혀있게 생각했어요. 그러던중 ReactiveX를 공부하고 Composable Architecutre로 구조를 잡아가면서 순수함수와 사이드이펙트에 대해 많이 접하네요😱 우선 간략하게 순수함수와 사이드이펙트에 대해 말해보겠습니다. 순수함수 순수함수는 말그대로 순수한 함수입니다! 즉, 순수함수의 결과값은 항상 동일해야합니다. 외부 요인(사..
-
Safe ArraySwift 2021. 7. 24. 09:19
안녕하세요. 그린입니다🟢 이번 포스팅에서는 배열에 대해 안전하게 조회하고 인덱스를 접근하는 방법에 대해 간략히 알아보겠습니다🙋🏻 배열에 대해 안전하게 접근하지 못할때 아래와 같은 에러를 런타임에서 많이 겪어보셨을겁니다. fatal error: Array index out of range 바로 접근한 배열의 인덱스가 범위 밖, 즉 없다는 에러 메시지입니다. if let등 아래와 같이 옵셔널바인딩을 안전하게 해줬다고 생각했는데 왜 이런 문제가 나타난걸까요? struct Person { let name = "bob" let age = 10 ... } let onePerson = Person() let twoPerson = Person() let people: [Person] = [onePerson, twoPe..
-
ReactorKit으로 계산기 구현하기Swift 2021. 7. 5. 21:48
안녕하세요. 그린입니다🟢 이번 포스팅에서는 ReactorKit으로 계산기를 구현해보겠습니다🧑🏻💻 우선 이번 계산기 프로젝트 같은 경우에는 ReactorKit으로 어느정도 정형화된 리액트 MVVM 아키텍쳐 패턴을 따릅니다. 여기 포스팅에서는 필수 파일에 대한 구현들만 간단히 소개하고 아래 제 Git 레포 주소를 남겨두겠습니다! 더 참고하실 분들을 Git을 참고해주세요👍🏻 1. View - 뷰는 우선 스토리보드로 UI요소 배치와 오토레이아웃을 적용했습니다. - 그 후 ViewController에서 ReactorKit을 임포트하고 스토리보드뷰를 채택하여 리액트와 바인딩될 수 있게 구현하였습니다. import UIKit import ReactorKit import RxCocoa class CalculatorV..
-
진수 변환Swift 2021. 5. 27. 11:29
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift에서 진수 변환하는 방법에 대해 학습하겠습니다🧑🏻💻 진수란? 얼만큼의 수를 증가시킨 후 자릿수를 올릴 것인지에 대한 단위를 말합니다. 즉, 2진수는 2개의 수를 사용하고 8진수는 8개의 16진수는 16개의 수를 사용합니다. 잘 알고 계시겠지만 기본적으로 실생활에서는 10진수 즉 10개의 0~9까지의 수를 사용하여 나타냅니다. 그렇다면, 각 진수 표현이 다른데 왜 알아야 할까요? 특히 2진수는 컴퓨터가 나타낼 수 있는 수의 범위로 2진수를 10진수로 10진수를 2진수로 변환하는 방법과 이해하는것이 중요합니다. 대표적으로 가장 많이 사용되는 2진수, 8진수, 10진수, 16진수에 대해 알아보고 각 변환하는 방법에 대해 알아봅시다! // MARK: - 진수..
-
Deep copy & Shallow copySwift 2021. 5. 25. 17:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Deep copy(깊은 복사)와 Shallow copy(얕은 복사)에 대해 학습해보겠습니다🧑🏻💻 본격적으로 알아보기전! 기본적으로 모든 데이터 타입은 값 혹은 참조 타입을 가지는건 알고 계시죠? 간단히 두 타입에 대해 설명해보자면, 값 타입으로 생성된 데이터는 각각 해당하는 메모리를 따로 소유합니다. 참조 타입으로 생성된 인스턴스는 주소를 공유하여 같은 주소를 참조한 값이 바뀌면 같이 변경됩니다. 이 두 차이를 통해 깊은 복사와 얕은 복사에 대해 어떨때 일어나고 어떻게 사용할지 알아봅시다👍🏻 Deep copy : 깊은 복사로 데이터를 그대로 복사하여 복사된 두 데이터 객체는 각각의 메모리를 가집니다. : 주로 기본적으로 값 타입의 객체들을 생성하면 깊은 복사로..