의존성 주입하는게 귀찮아질 쯤 DI라이브러리를 알아보기 시작했는데요, 종류가 정말 많더라구요... 그래서 뭘 쓸지 고민하다가 각 라이브러리의 Overview를 읽어보며 특징을 정리해보게 되었습니다! Factory (0.9K) https://github.com/hmlongco/Factory GitHub - hmlongco/Factory: A new approach to Container-Based Dependency Injection for Swift and SwiftUI. A new approach to Container-Based Dependency Injection for Swift and SwiftUI. - GitHub - hmlongco/Factory: A new approach to Contai..
[iOS] FCM으로 Push Notification (푸시 알림) 구현하기 FCM(Firebase Cloud Messaging)같은 경우는 공식문서와 설정 튜토리얼이 정말 잘 되어있어서 공식 문서를 따라가시는 것도 좋을 것 같습니다! I. Key 발급 1. 우선 먼저 Apple Developer Member Center에서 Keys에 들 dokit.tistory.com 이번엔 FCM에 이어서 로컬에서 푸시를 구현해보려고합니다. 별도의 토큰이 필요하지 않기 때문에 훨씬 간단해요! 알림 허용 받기 우선 사용자에게 알림 허용 권한을 받야야합니다. AppDelegate에서 설정하기 import UserNotifications class AppDelegate: NSObject, UIApplicationDeleg..
에러 핸들링은 정말 중요합니다. 단순히 라이브러리에서 발생하는 에러를 처리하는 것 뿐만 아니라, 비즈니스 로직에 따라 적절한 에러를 생성하고 다른 레이어에서 처리해야합니다. 그래서 이번 포스팅에서는 Combine에서 에러를 핸들링하는 방법을 정리해보았습니다. 에러의 종류 프로그램에는 2가지 종류의 에러가 있습니다. 개발자 에러와, 사용자 에러입니다. 개발자 에러는 개발 도중, 즉 디버그 모드에서 발생할 수 있는 에러입니다. 개발자 에러를 내기 위해서는 assert문을 주로 사용하며 assert문은 코드를 작성하는 단계에서 문제가 있을 경우 프로그램을 중단하고 에러 메세지를 표시해줍니다. 이를 통해 개발자는 논리가 맞는지 확인하거나, 전달받은 값이 유효한 값인지 확인해볼 수 있습니다. assert문은 릴리..
문득 Task의 사용 방법을 자세히 모르고 있는 것 같아 Swift Concurrency 공식 문서를 정독해보게 되었습니다. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/ Documentation docs.swift.org 이건 영문이고 https://bbiguduk.gitbook.io/swift/language-guide-1/concurrency 동시성 (Concurrency) - Swift 한 동시성 도메인에서 다른 동시성 도메인으로 공유될 수 있는 타입을 전송 가능 타입 (sendable type) 이라고 합니다. 예를 들어, 액터 메서드로 호출될 때 인수로 전달되거나 작업의 결과로..
일반적인 동기 함수 테스트는 정말 간단합니다. func test_signup_email_validation() { // True XCTAssertTrue(viewModel.isValidEmail("test@example.com")) XCTAssertTrue(viewModel.isValidEmail("user@domain.co.uk")) // Fasle XCTAssertFalse(viewModel.isValidEmail("invalid_email")) XCTAssertFalse(viewModel.isValidEmail("user@.com")) XCTAssertFalse(viewModel.isValidEmail("@domain.com")) } 함수의 input과 output이 명확하므로 손 쉽게 여러 Tes..
문제: 구슬을 나누는 경우의 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 import Foundation func solution(_ balls:Int, _ share:Int) -> Int { if (balls == share ){ return 1 } let answer = fac(balls) / fac(balls - share) / fac(share) return Int(NSDecimalNumber(decimal: answer)) } func fac(_ n: Int) -> Decimal{ var mu: Decimal = Decimal(1) f..
문제 가장 가까운 같은 글자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞..
문제 둘만의 암호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다. index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다. skip에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서..
- Total
- Today
- Yesterday
- ios
- design pattern
- Swift Concurrency
- combine
- 비동기/동기
- reactive programming
- GetX
- SWM
- MVI
- 리액티브 프로그래밍
- MVC
- programmers
- 아키텍쳐 패턴
- notion
- MVVM
- DocC
- healthkit
- 프로그래머스
- Flux
- Flutter
- TestCode
- swift
- 코디네이터 패턴
- Architecture Pattern
- 소프트웨어마에스트로
- Bloking/Non-bloking
- 노션
- coordinator pattern
- SwiftUI
- RX
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |