swift 184

[Swift] plain ol' data(POD)

plain ol' data(POD) 👇 애플 문서에 나와있는 설명 [apple swift docs](https://github.com/apple/swift/blob/main/docs/ABIStabilityManifesto.md#type-properties) - 어떤 데이터 타입은 단순히 데이터를 저장하고 추가적인 복사, 이동 또는 소멸 의미가 없습니다. 즉, trivial(혹은 POD)으로 알려진 이 데이터는 그들의 비트를 복제하는 것으로 copy할 수 있고, deallocation를 통해 소멸된다. 만약 모든 멤버의 타입이 trivial이라면 그것또한 또한 trivial 타입입니다. - 어떤 타입이 비트 단위로 이동가능하다 라는 것은 그것의 주소에 의존하는 어떠한 사이드 테이블의 참조도 없을 때를 의미..

[Xcode] Instruments - Network

[Xcode] Instruments - Network 내가 사용하는 앱이 네트워크 통신에 있어서 어떤 Request와 Response를 처리하는지 체크하기 위해서 이 방법을 사용할 수 있음. 1. Xcode의 좌측의 이미지에서 삼각형 버튼을 꾹 누르면 우측의 메뉴팝업이 나타나고 오른쪽 이미지와 같이 변경2. Network를 선택 3. 기록을 실행기록하면 타임라인에 따라 결과가 나타남. 4. 내가 확인하고자 하는 부분을 선택 - 이미지 좌측 상단에 List: HTTP Transaction으로 설정한 화면 5. 응답과 결과 확인 직접 사용하면서 자세한 것들은 보기

[Swift] 커링(Currying)

# Currying 함수형 프로그래밍을 위한 Currying 학습. # 계기 - SwiftUI를 사용하여 View를 모듈화를 시도. - 더 잘 만들기 위해 함수형 프로그래밍의 해당 개념에 대한 학습이 필요하다고 느낌. # 목표 - 간단한 덧셈 구현 (Level 1) - 정규표현식 구현 (Level 2) - Reduce, Map, Filter 구현 - FlatMap, CompactMap 구현 (⚠️ 실패한 구현) : 기록하기 위해서 적어둠. # 참고에서는 UI와 관련한 클로저를 함수형으로 받아서 간결하게 처리하는 예제도 있으니 확인하면 좋음. ❗️ 실패한 구현인 이유 : 결과값이 다르게 나타남. # 파일 # 간단한 덧셈 구현 (Level 1) import Foundation public class LEVE..

Test Double (Swift)

Test Double (Swift) 간단 용어 정리테스트 더블이란, doc와 동일한 API를 제공 sut (system under test): 테스트 대상 doc (depended-on component): sut이 의존하고 있는 구성요소 왜 필요할까?Solitary or Sociable?, 테스트 중인 단위가 Sociable한지 혹은 Solitary인지의 여부가 중요Sociable의 경우에 테스트하는 Unit의 결함이 아닌 의존하고 있는 클래스의 결함으로 인해 테스트가 실패하는 문제가 발생할 수 있음이러한 문제를 막기 위해 실제 동작하는 것처럼 보이는 별개의 객체를 따로 만드는 것을 고려할 수 있다.   테스트 더블의 종류 Dummy: 아무런 동작을 하지 않으며, 인스턴스화 된 객체만 필요하고, 기능까..

Swift로 iOS에서 HTML 코드 불러오는 PoC

Swift로 iOS에서 HTML 코드 불러오는 PoC iOS로 HTML을 로드하는 여러가지 실험 진행 문제상황노션 웹 페이지를 webView를 통해 보여주고 있었는데, 로딩이 오래걸린다는 문제점이 있었음.이를 개선해보고자 했고, 노션 페이지를 내보내기를 통해 HTML, PDF로 바꾸어서 서버에서 내려주는 방식으로 시도해보기로 함. 노션 페이지를 PDF로 내보내서, PDFKit을 사용하는 방법에는, 보여주고자 하는 페이지의 특성이랑 PDF로 뚝뚝 끊기는 것이 맞지 않아서 어색했으며, 무엇보다도 mac의 아이콘이 window화 되어서 예쁘지 않다라는 큰 문제점이 있었음 결국 직접 notion 주소를 호출하는 것이 아닌 html주소를 호출해보고자 함. 결과물 UI 왼쪽: 노션페이지를 webView를 통해 l..

ReactorKit + RxDataSources #2(RxTableViewSectionedAnimatedDataSource)

ReactorKit + RxDataSources #2 (RxTableViewSectionedAnimatedDataSource) ReactorKit과 RxdataSource를 함께 사용하는걸 연습해보고자 함. 개발환경ReactorKit 3.2.0RxDataSources 5.0.2SnapKit 5.6.0Xcode 14.0폴더구조  결과물 UIRxTableViewSectionedAnimatedDataSource 사용시 애니메이션이 적용되는지 확인하기 위해 itemSelect시 첫번째 섹션 삭제RxTableViewSectionedReloadDataSource의 경우에는 reloadData()로 애니메이션 작동 안함. Step 1. 모델을 정의하기import UIKitimport RealmSwiftimport D..

ReactorKit + RxDataSources #1(SectionModelType)

ReactorKit + RxDataSources #1(SectionModelType) 개발환경ReactorKit 3.2.0RxDataSources 5.0.2SnapKit 5.6.0Xcode 14.0 RxDataSources 를 활용한 코드 플로우 간단 정리섹션마다 다른 셀을 적용tableView를 활용하여 동적 높이를 구현함.ReactorKit + RxDataSource를 활용하면 궁합이 좋음cellReactor에 initialState의 값을 Model로 초기화 결과물 UI  전체 코드 샘플코드는 하나씩 플로우를 따라가면서 볼 예정 Step 1. 모델을 정의하기// ✅ 0. 사용할 모델읠 정의class GWRxDataSourceModel { var id = UUID().uuidString ..

iOS CompositionalLayout (UICollectionView)

iOS CompositionalLayout (UICollectionView) 공식문서를 열었는데 샘플코드가 14.0 이상으로 나옴. - 글 제일 하단에 참고 부분에 있음취업 준비하면서 13.0을 기준으로 공부하고 있어서 이를 기준으로 작성 CompositionalLayout은 다행히도 13.0 이상에서도 사용이 가능. 이전에는 DataSource만 SnapShot을 사용하고 레이아웃은 FlowLayout을 사용했었는데, 이 부분마저도 공부해보려고 함. 그동안 FlowLayout 만 사용했던 이유는 익숙해져서 Carousel 등 커스텀 구현이 용이하고 서비서적으로 막히는 부분이 없었기 때문인데, 새로운 부분도 알고 갖추면 더 좋을 것으로 기대됨. 목차1. UI결과물2. 레이아웃 코드3. 레이아웃 이론 학..

[ReactorKit] ReactorKit 공부하기 #3 RxTodo 따라잡기 (1)

ReactorKit 공부하기 #3 RxTodo 따라잡기 (1) 리액터 킷을 공부하는데 RxTodo를 보면서 따라해보자우선 ReactorKit의 Create기능을 스스로 구현해보기결과물 영상 리액터 간단 정리직접 따라하고 쳐보면서 사용법 이해보고자 함.ViewController에서 map을 통해 원하는 Action으로 변경해서 reactor에 전달reactor에서는 mutate함수를 통해서 이전 상태를 받아서 다음 상태를 반환reduce는 해당 로직 처리그리고 변경된 값은 viewController에서 map을 통해 reactor.state를 가져다가 사용 ViewController 코드 구현base에 존재하는 Reactor 제대로 연결해야 함. //// TaskListViewController..