ios 40

[iOS / UIKit] How to use PreviewProvider in UIKit

How to use PreviewProvider in UIKit 안녕하세요! 오늘은 UIKit에서 PreviewProvider를 사용하는 방법을 알아봅시다! PreviewProvider는 SwiftUI에서만 사용할 수 있는 게 아닌가 생각하실 수 있겠지만 UIKit에서도 활용할 수 있습니다! 일단 사진부터 보시죠! PreviewProvider 부분만 확대해서 다시 보여드리겠습니다! 전체 코드도 보여드리겠습니다! UIKit 상황에서 개발한다고 하더라도 PreviewProvider를 활용하시려면 반드시 SwiftUI를 import 해주셔야 합니다! 맥북 성능에 따라 PreviewProvider를 사용하시는 게 시뮬레이터나 실기기를 활용하는 것보다 유리할 수도 있고, 그러지 못할 수도 있으니 현재 상황에 맞춰..

iOS/UIKit 2023.02.12

[Swift] 맵 삼형제(map, flatMap, compactMap)에 대해 알아봅시다

(1) map 애플 개발자 홈페이지에 있는 map에 대한 설명입니다. 배열 내부의 요소들을 매핑해서 돌려준다네요! 그런데 mapping이 뭘까요? 구글에 물어봅시다. 역시 명쾌하다! 구글! 여기 말고 이번에는 해시넷에서 봅시다(블록체인 관련된 정보들이 참 많습니다). 아까보단 훨씬 낫죠? 그래도 이해가 잘 안 될 수 있습니다. 코드로 보시죠! 바로 감이 오시나요? numbers 배열의 각 요소에 1을 더한 애들을 배열에 담아 보여 줍니다. 다른 예시를 한 번 들어볼까요? 아까 사용했던 numbers를 그대로 사용하는데, 이번에는 numbers 내부의 각 요소를 String 타입으로 활용해봤습니다. 이렇게 축약해서 쓸 수도 있습니다. 이번에는 한 번 스까서 써볼까요?? numbers의 각 요소에 3을 더한..

iOS/Common 2022.06.10

[Swift] 고차함수(map, filter, reduce)를 스윽 핥아봅시다

고차함수(Higher-order function)는 다른 함수를 전달인자로 받거나, 함수 실행의 결과를 함수로 반환하는 함수를 뜻합니다! Swift의 함수(클로저)가 일급시민이므로 함수의 전달 인자로 전달할 수 있고, 함수의 결괏값을 반환할 수 있습니다. 고러면 바로 고차함수 map, filter, reduce에 대해 알아봅시다! (1) map map은 뭘까요? 내부의 요소들을 변경(변형이 좀 더 정확합니다)해서 이를 담아 돌려주는 것입니다. 바로 봅시다! 감이 잡히시나요? Numbers 배열 내부에 있는 각 요소에 대하여 mapNumbers1에서는 1을 더해주었고, mapNumbers2에서는 아예 String으로 변환하여 사용해주고 있습니다. 이런 식으로 축약해서 사용할 수도 있습니다. 심지어 섞어 쓸..

iOS/Common 2022.06.08

[Swift] final 왜 막 갖다 붙이나요? (feat. vtable, dynamic dispatch)

우리가 코드를 짜다 보면 이렇게 final 키워드를 붙여서 쓰는 경우가 있잖아요?(반박할 시 코 쓱 닦음) 다른 사람들이 쓰니까 일단 따라 쓰긴 하는데, 이거 왜 쓰는 걸까요? Swift의 LANGUAGE GUIDE 중 Inheritance 항목의 내용을 보시면 final에 대한 설명이 나옵니다. (발 번역 주의) “여러분은 final 키워드를 메소드나 프로퍼티, 또는 서브스크립트 앞에 사용함으로써 오버라이드 되는 것을 막을 수 있습니다. (예시: final var, final func, final class, final subscript). final을 써놓고 오버라이드를 하려고 하면 컴파일 에러가 발생합니다. extension을 사용하는 경우에도 final 키워드를 사용할 수 있습니다. (이하 생략)..

iOS/Common 2022.06.06

[Swift] lazy 왜 쓰나요?

우리 iOS 개발할 때 이런식으로 lazy 많이 쓰지요? private lazy var sampleLabel: UILable = { let label = UILabel() label.text = "lazy 왜 쓰나요?" label.textColor = UIColor.systemBlue return label }() 그런데 lazy를 왜 쓰는지 알고 계신가요? lazy 키워드를 사용하는 프로퍼티를 지연 저장 프로퍼티(Lazy Stroed Property)라고 합니다. 지연 저장 프로퍼티는 호출이 있어야만 값을 초기화 하는 특성을 가지고 있습니다. 좀 더 자세히 설명해 봅시다. 우리가 인스턴스를 초기화 하는 과정에서 언제나 모든 저장 프로퍼티가 동시에 초기화 될 필요가 없는 상황이 분명히 있겠지요? 그럴 때..

iOS/Common 2022.05.13

[RxSwift] RxSwift 왜 써야 하나요?

* 본 내용은 RxSwift의 Documentation에 있는 Why.md 문서를 번역한 내용입니다. 다소간의 부정확한 의역이 포함될 수 있으니 위 이미지를 클릭하셔서 원문을 확인하시기를 권장합니다! Rx(Reactive Extensions) 왜 쓰냐면요 Rx를 사용하면 앱을 선언형 프로그래밍의 방식으로 만들 수 있습니다. Bindings Observable.combineLatest(firstName.rx.text, lastName.rx.text) { $0 + " " + $1 } .map { "Greetings, \($0)" } .bind(to: greetingLabel.rx.text) UITableView와 UICollectionView를 구현할 때도 활용할 수 있습니다. viewModel .rows ..

[Code Snippet] private lazy var 쓰다가 팔 부러질 것 같을 때 보는 글

앱을 개발하는 과정에서 자연스럽게 많이 쓰게 되는 코드들이 있습니다. 제목에 써 놓은 'private lazy var' 외에도 여러분들 각자 상황에 따라 유독 자주 사용하는 코드가 있을 것입니다! 그럴 때 Xcode에서 제공하는 Create Code Snippet 한 번 사용해보시는 건 어떨까요?! 자 자 바로 시작합시다! 지금 보시는 화면이야 예시를 들기 위해서 세 개의 Label만 추가한 상황이지만, 실제로 앱을 만드는 과정에서는 다양한 종류의 UI Component들을 활용하는 경우가 많지요! 이런 상황에서 반복적으로 사용하게 되는 코드들을 복사해 놨다가 다음번에 붙여 넣기 하는 방법도 있겠지만, 좀 더 그럴싸한 방법이 있습니다! 보시면 'plv'만 작성했는데 자동완성으로 'private lazy..

iOS/Common 2022.04.29

키체인(Keychain)에 대한 설명과 간단한 사용법

iOS 앱 개발 과정에서 로컬(모바일 기기)에 특정 정보를 저장할 때 간단하게는 유저디폴트(UserDefaults)부터 코어데이터, Realm, SQLite 등 여러 저장 방식을 사용할 수 있습니다. 하지만 정말 중요한 사용자 정보들(예를 들어 패스워드, 프라이빗 키, 인증서 등)을 아무 곳에나 저장하는 것은 아주 위험하다고 할 수 있겠습니다! 민감한 정보를 안전하게 저장하기 위해 애플은 Keychain Services를 제공합니다. 여러분들은 사용자의 민감 정보를 암호화 해서 키체인에 저장하고, 이후에 이를 다시 복호화 해서 사용할 수 있습니다! 결국 중요한 것은 사용 방법이겠지요? 키체인을 생성(Create)하고, 읽고(Read), 지우는(Delete) 방법을 한 번 알아봅시다! 바로 전체 코드를 보..

iOS/Common 2022.04.20

Test Driven Development는 무엇이며, 왜 하는가?

고오급 iOS 개발자가 되기 위해 고군분투 하고있는 요즘입니다! 그러다 연쇄 할인마 유데미에서 또 할인을 하길래 들을만한 강의 없나 하다가 유데미에서 굉장히 잘나가시는 무함마드 아잠 선생님의 TDD 강의를 구매하게 되었습니다! 강의는 다 들었고! 배운 내용을 잊지 않기 위해 배운 내용 전파를 좀 해보겠습니다ㅋㅋ 1. TDD의 Life Cycle TDD는 다음과 같은 생명 주기를 갖습니다. (1) 실패하는 테스트를 작성 (2) 테스트를 성공하도록 만들기 (3) 성공한 테스트 코드를 리팩토링 하기 (4) 위 과정 반복하기 2. 왜 TDD를 해야 하는가? (1) 걱정 없이 코드를 수정할 수 있습니다 - 테스트 코드가 작성 돼 있다면 여러분이 어떤 코드를 수정할 때 해당 수정 내용이 다른 코드에 영향을 미치는지..

iOS/Common 2022.04.14

앱 스토어 커넥트에서 DSYM 파일 다운로드가 안 되는 문제 해결하기

DSYM 파일을 다운로드 받을 때 보통 두 가지 방법을 씁니다. (1) Xcode 상단의 Window 항목 -> 그 중 Organizer 클릭 -> Archives의 Details에 있는 Download Debug Symbols 버튼 클릭 (2) App Store Connect 접속 -> TestFlight 클릭 -> DSYM을 받고자 하는 빌드 버전 클릭 -> 빌드 메타데이터 클릭 -> 기호 포함에 있는 예 | dSYM 다운로드 클릭 그 런 데... 왜 클릭해도 다운로드 안 되냐 이거야... 그 런 데... 정말 단순한 해결책이... 바로 바로 바로 바로... Safari를 쓰면 됩니다~ Just use Safari~ Safari에서 위에 나온 절차를 그대로 따라하면 무슨 일이 있었냐는듯 다운로드가 ..

iOS/Common 2022.03.31