일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- xcodecloud
- ios18
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- IOS
- uikit
- ObjC
- regex
- test
- SWIFT
- composablearchitecture
- combine
- Git
- TCA
- iOS 13.0+
- github
- 개발
- iOS 개발자
- Firebase
- 모바일
- swiftdata
- xcode
- Alamofire
- UI
- Navigation
- SWIFTUI
- concurrency
- 정규표현식
- Tuist
- navigationsplitview
- network
- Today
- Total
목록SWIFT (17)
iOS 개발 기록
📄목차CollectionView에 Combine 적용하기 DiffableDataSource를 사용한 이유 UICollectionView CollectionView 기본 레이아웃 설정 Combine PublisherModelAPI request Publisher를 구독하고 diffableDataSource에 업데이트ViewModel CollectionView에 데이터를 적용 결과Reference CollectionView에 Combine 적용하기 RxSwift + RxCocoa 조합처럼 보통 Combine + SwiftUI 조합으로 많이 쓰인다고 한다. 그런데 회사에서는 UIKit을 사용중인데 Combine + UIKit 조합은 어떻게 사용하나 공부하다가 자주 사용하는 CollectionView에 적용해 ..
📄목차Error발생 상황 원인 질문Reference Error// 로그창 Error Domain=NSURLErrorDomain Code=-999 "cancelled"발생 상황 Combine으로 네트워크 통신을 구현해보려고 시도하다가 발생한 문제. var cancellables = Set() AnyPublisher . ( 각종 메소드 ... ) .sink ( ... ) .store(in: &cancellables) 다음과 같이 코드를 작성했는데 에러가 발생했다. 원인 sink로 구독한 후에 반환되는 AnyCancellable를 메모리에 올리지 않아 바로 구독이 해지되어 생기는 문제. → 때문에 변수로 설정한 후에 메모리에 올려야 한다. var cancellable: AnyCancellable? cancel..
📄목차Collection View UICollectionViewDelegate, UICollectionViewDataSourceModern Collection View (iOS 13.0+) UICollectionViewDiffableDataSourceUICollectionViewLayout UICollectionViewFlowLayoutUICollectionViewCompositionalLayout (iOS 13.0 +)전체 코드 Reference Collection View UICollectionViewDelegate, UICollectionViewDataSource class ViewController: UIViewController { @IBOutlet weak var collectionView: ..
📄목차Compositional Layout구성Item cell 구현 SupplementaryView의 구현전체 코드ReferenceCompositional LayoutiOS 13.0에 도입된 UICollectionView의 새로운 레이아웃. 다음과 같은 특징이 있다고 한다. 기존의 UICollectionViewFlowLayout보다 더 확장된 레이아웃 제공Item 정의 -> Group 정의 -> Section 정의 순으로 순으로 진행해 간다.아래의 그림과 같이 여러 섹션으로 나누어 각 섹션끼리 관리 가능. 섹션별로 다른 레이아웃을 구성하기 쉬워진다. : 요즘 많이 보이는 다음과 같은 뷰를 View를 구현하기 편해진다. 구성Collection view의 구성 Supplementary view가 위치할 수 ..
📄목차Retain CycleCapture list weak, unowned Non-escaping closure vs Escaping closureNon-escaping closureescaping closure self? VS guard let self = self else { return } Reference Retain CycleClosure의 경우 reference type이기 때문에 순환 참조(retain cycle)를 발생시킬 수 있다. class Person { let name: String // self가 확정난 후에 name을 참조해야 하기 때문에 lazy 변수로 설정 lazy var introduction: () -> String = { return "저는 \(self.name) 입니다..
에러 처리 Tags: Swift 에러의 표시와 발생 Swift에서 에러는 Error 프로토콜을 준수하는 타입의 값으로 표현된다. 에러는 주로 열거형(enum)을 통해 그룹화 되어 관리된다. enum LogViewError: Error { case documentDirectoryError case notFindLogURL case lastLogNameError(logName: String) case pathToDataError case imageKeyParseError } 예상치 못한 흐름이 발생했을 때에 throw문을 통해 에러를 발생시켜 일반적인 흐름이 계속될 수 없다는 것을 알릴 수 있다. 아래 코뜨는 해당 이름의 로그가 잘못되었다는 것을 알리는 에러를 발생시킨다. throw LogViewError...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dkZQn5/btrzdg9r7nk/aAQ1SfV1XfQN17XdCpBvuk/img.png)
처음에 문제를 읽고 바로 파악하기 쉽지 않았고, 출력 예제를 보고나서야 어떤 문제인지 파악할 수 있었다. 주어지는 응답완료시간과 처리시간을 가지고 시작 시간을 구해야 한다. 주어지는 로그의 배열이 응답 완료 시간을 기준으로 정렬되어 있기 때문에 해당 로그의 시작 시간이 전의 로그의 끝나는 시간보다 빠르다면 작업 처리 요청이 무조건 겹친다고 볼 수 있다. 예를 들어 S4의 경우 S3보다 끝나는 시간이 늦지만 시작 시간이 (end + 1s) 이내이기 때문에 겹친다고 볼 수 있지만 S3는 시작 시간이 (end+1s) 보다 늦기 때문에 포함시킬 수 없다. import Foundation func solution(_ lines:[String]) -> Int { if lines.count == 1 { return ..