일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JavaScript
- FileOwner
- 맥
- jQuery
- Xcode
- 스위프트
- Python
- spring
- Swift
- 개발기록
- 파이썬서버
- 웹
- 앱배포
- 스프링
- iOS앱배포
- Xib
- MainScheduler
- AJAX
- iOS배포
- DispatchGroup
- iOS계산기
- subscript
- 계산기앱
- ios
- 딩동말씀
- 계산기앱만들기
- 앱버전구하기
- customclass
- FLASK
- 자바스크립트
- Today
- Total
목록전체 글 (86)
개발하는 뚝딱이
최근 1.6.1 버전으로 딩동환율을 업데이트하였다. 회사 일로 계속 바쁘다는 핑계로 딩동환율을 돌보지(?) 못했는데, RxSwift 공부한 것을 프로젝트에 적용해보고 싶다는 생각이 들어 이번 버전을 준비하였다. 1.6.1 업데이트 사항 1. RxSwift를 적용하여 리팩터링 RxSwift를 적용한 리팩터링을 진행하였다. 선택한 국가를 변경할 때, 사용자가 숫자를 입력할 때, 환율 타입을 변경할 때, 환율 우대률을 변경할 때 모두 환율 계산을 다시 해야 하는데 RxSwift를 이용해서 이를 좀 더 수월하게 관리할 수 있었다. 또한 Observable pattern을 적용하기 위해 Observable이란 class를 생성하였는데, RxSwift에서 제공하는 Relay와 Driver 등을 이용하여 경우에 따라..
1. 현재 앱 버전 구하기 var appVersion: String? { guard let info = Bundle.main.infoDictionary, let currentVersion = info["CFBundleShortVersionString"] as? String else { return nil } return currentVersion } 2. Build number 구하기 var buildNumber: String? { guard let info = Bundle.main.infoDictionary, let buildNumber = info["CFBundleVersion"] as? String else { return nil } return buildNumber } 3. 앱스토어 버전 구하기 ..
MainsyncIstance.asyncInstance는 이미 메인 쓰레드에서 실행되고 있을 때, 강제로 비동기 전달을 해야하는 경우가 잘 없으므로 왠만하면 쓰지 않는 것이 좋다.(MainScheduler.asyncInstance) 하지만 종종 같은 파이프라인이고 1번 event가 2번 event를 트리거하는 상황에서, 두 event가 동시에 발생하면 경고가 발생한다. 따라서 이런 겨우 MainScheduler.asyncInstance를 사용한다. 참고; https://stackoverflow.com/questions/58332584/rxswift-mainscheduler-instance-vs-mainscheduler-asyncinstance
오늘 새롭게 알게 된 swift 하나! response .filter { response, _ in return 200.. Collection > Range의 static 메소드이다. .contains 메소드 대신에 사용할 수 있을 것 같은데, 어떤 의미인지 유추하기 힘들어 비교적 가독성이 떨어진다. 익숙하지 않아서 그럴 수도...?!
오늘의 삽질은 소소한 것이라 다행이다! func download() { // ... let dispatchGroup = DispatchGroup() dispatchGroup.enter() downloadImage { resultImage in // do something dispatchGroup.leave() } dispatchGroup.notify(queue: .main) { // do something } // ... } func downloadImage(completion: @escaping (UIImage?) -> Void) { // do something } DispatchGroup을 사용할 때, .enter()를 호출하면 .leave()가 호출될 때까지 .notify(:)함수는 호출되지 않는다..
https://medium.com/codex/swift-upgrade-your-skills-with-these-8-tips-da612111668 본문은 다음 링크와 같습니다. 원글에는 더 다양한 예시들이 많으나, 기본 문법처럼 보이는 것들을 제외하고 팁으로 생각되는 것들만 추려보았습니다. 1. tuples을 다양하게 쓰기 tuple에 이름을 함께 주어 값을 전달할 수 있습니다. func getInfo() -> (name: String, email: String) { return (name: "Matt", email: "matt@example.com") } // 값에 접근하는 방법 let info = getInfo() print(info.name) // Matt print(info.email) // mat..