WooKoo Blog

물과 같이

전체 글 124

[iOS] - RxDataSource로 테이블뷰 헤더 푸터 그리기 (MVVM)

Rx를 이용해서 테이블 뷰의 헤더뷰나 푸터뷰를 그려야할 경우가 있을 것이다. 기존에 tableView.rx.items를 이용해서 테이블 뷰를 그렸겠지만 헤더뷰와 푸터뷰, 섹션 등을 사용하려면 RxDataSource를 이용해야한다. 그거에대한 방법을 자세하게는 아니고 정리해보려고한다. RxDataSources를 라이브러리를 추가한다. https://github.com/RxSwiftCommunity/RxDataSources GitHub - RxSwiftCommunity/RxDataSources: UITableView and UICollectionView Data Sources for RxSwift (sections, animated updates, UITableView and UICollectionView ..

개발/개발 2022.04.04

[iOS] - TableView Cell 갯수에 따른 유동적 높이 조절

오늘은 간단한 예제로 Cell 갯수에따라 테이블 뷰 높이를 바꿔보는 걸 해볼려고해요 먼저 프로젝트 생성 후 간단하게 테이블 뷰를 만들어주겠습니다. tableView.backgroundColor = .green tableView.delegate = self tableView.dataSource = self tableView.snp.makeConstraints{ $0.width.equalTo(200) $0.height.equalTo(50) $0.center.equalToSuperview() } 스냅킷이랑 스토리보드랑 막 썼어요!!! (귀차니즘..) 테이블 뷰 그리는 방법은 다 아실거라고 생각하고 다음 고고 그리고 var data = [ "안녕하세요", "재욱이에요" ] 이런 변수를 만들고 버튼을 하나 만들거..

개발/개발 2022.03.29

[iOS] - 채팅할려고 정리하는 Swift 채팅 구현 - Socket.io & Node.JS

Swift에서 Socket.io를 이용해서 채팅을 개발하고 있는데 한국어로 된 자료가 너무 없기도하고 (안드도..) 있더라도 필요한 내용이 없어서 이 포스트도 부족하지만 누군가에게는 함께 보면 좋을거라고 생각해서 나도 정리해본다!!! 먼저 구글에 검색했을 때 나오는 좋은 포스트들의 자료들을 함께 봐주면 된다. 먼저 서버 구현 먼저 하도록 하겠다. 이게 내가 앱개발자라 그런지 몰라도 서버에서 작업해줘야하는걸 몰라서 왜 안되나 삽질을 많이 했다. 노드를 먼저 설치해준다.! https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 설치..

개발/개발 2022.03.22

x84_64, arm64 오류 해결 SPM과 코코아팟 함께 쓸 때

M1 맥북을 사용하는데 SPM은 문제가 없었는데 코코아팟을 사용하니 갑자기 Could not find module 'SnapKit' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator, at: /Users/jay/Library/Developer/Xcode/DerivedData/Test-cerdaljnbtfvzoeeqtgrnvvofraz/Build/Products/Debug-iphonesimulator/SnapKit.swiftmodule 라는 오류가 나왔다. 시뮬레이터에서는 아이폰 5 이후로 arm64로 빌드가 되는데 이런 오류가 뜨니 아무리 찾아봐도 빌드셋팅에서 아키텍쳐에 arm64로 열라는 말 밖에 없었다. 결..

개발/개발 2022.03.07

[개발] - PNG 와 JPG의 특징

인터넷 보다가 요런게 있길래 한번 정리해보려고한다. PNG - 일반적으로 용량이 JPG 보다 큼 PNG파일은 비손실 압축 방식이라서 원본이 훼손되지 않는다. 글자가 많이 들어간 경우 PNG가 좋아.. JPG 사람 눈에 거슬리지 않을 정도로 원본을 훼손해 압축한다. 하지만 인공적으로 만든 디자인은 PNG 보다 용량이 커질 수 있음 결론 1. JPG가 좀 더 좋은거 같음.. 호환성이라던가 파일용량이 작으니.. 2. 파일 용량이 더 jpg가 일반적으로 작으니 요게 좋음! 3. 배경없이 사용하려면 PNG를 이용해야 투명 배경이 적용됌!

개발/개발 2022.02.08

[Swift] - async/await 살펴보기

Swift 5.5에서부터 async와 await에 대한 문법이 릴리즈 되었습니다. 동기 및 비동기 로직을 작성할 때 편하게 처리를 해줄 수 있는 키워드로 먼저 동기 비동기에 대해서 짧게 살펴보고 키워드들을 사용해보겠습니다. 동기 (sync) 어떤 작업이 있다면 이 작업이 끝날 때까지 다른 작업을 기다리는 것 비동기 (async) 어떤 작업과는 상관없이 나머지 작업들을 바로 실행하는 것 ex) 네트워킹 작업 기존 소스에서 비동기 작업을 할 때 completion Handler를 통해서 특정 메소드가 끝났을 때를 알려줬었죠 API요청 할 때나 그럴 때 만약 error 처리 시 저렇게 그냥 return 시켜버리는 경우가 있는 경우라던가.. 그런 오류처리를 해주더라도 가독성이 너무 안좋아지는 경우가 있어서 이를..

개발/개발 2022.02.08

Swift 5.1 새로운 문법 정리

SwiftUI를 공부하면서 Swift 5.1에서부터 나온 문법들을 공부하고 조금 정리해둬야 할 것 같아서 중요한 문법들? 을 정리해보려고한다. 1. Omit Return (리턴 생략) 클로저에서 리턴 키워드를 생략을 할 수가 있었는데 이제 함수에서도 반환하는 값이 명확하다면 생략이 가능하다는 것이다! func sum(a: Int, b: Int) -> Int{ a + b } 이런식으로!! 하지만 어떤 값을 리턴해야할지 명확하지 않은 경우에는 에러가 나게 되고 return 키워드를 앞에 붙여줘야합니다. 2. Some 정리중

개발/개발 2022.01.31

[Swift] - Access Control 접근제어자 (open, public, internal, fileprivate, private)

Accesss Control(접근제어) Accesss Control(접근제어)는 다른 소스파일 및 모듈의 코드에서, 코드의 일부에 대한 액세스(접근)을 제한합니다. 이 기능을 사용하면, 코드의 구현 세부사항을 숨기고, 해당 코드를 접근하고 사용할 수 있는 기본 인터페이스를 지정할 수 있습니다. 개별타입(individualtypes)(클래스, 구조체, 열거) 뿐만아니라 해당 타입에 속하는 프로퍼티, 메소드, 이니셜라이저 및 서브스크립트에 대해 특정접근 레벨을 지정할 수 있다. 프로토콜은 전역 상수, 변수 및 함수처럼 특정 컨텍스트로 제한 될 수 있다. 말 그대로 외부 객체에서 객채 내부의 자료의 접근을 컨트롤하는것 *open 접근은 Class에서만 사용 가능. struct와 eum은 public부터 사용 ..

개발/개발 2022.01.21

[iOS] - Testable한 코드를 작성하기

Testable한 코드를 작성 할 줄 아는가?? 아니면 그러한 경험이 있는가에 대해서 누군가 묻는다면 그런 경험을 한 적은 없는 것 같다. 오늘은 어떤 코드를 보고 Testable 하다는지 조금 정리해보려고한다. https://www.swiftbysundell.com/articles/refactoring-swift-code-for-testability/ 이 사이트를 참조해서 정리 및 공부해보았다. 단위 테스트는 앱의 품질을 개선하고 확장성 있도록하는 훌륭한 도구라고한다. * Bitrise : 쉽게 테스트 및 자동 앱배포를 할 수 있게 도와준다는 광고가 붙어있는데 다음에 한번 구경해봐야겠다. 1. 순수 함수 테스트하기 쉬운 코드의 한가지 특징은 순수 함수처럼 동작한다는 것! 어느 환경에서도 일정한 값을 도..

개발/개발 2021.12.19