본문 바로가기

분류 전체보기

(268)
[Swift] CustomStringConvertible Protocol 파해치기 특정 type을 textual한 표현으로 커스텀해주는 protocol입니다. type이란? 내가 만든 커스텀의 구조체, 클래스, 클래스 등의 타입을 의미합니다. 특정 object를 print(_:)로 출력할 때, CustomStringConvertible protocol을 채택 후 내부 instance인 description을 커스텀 했다면 String(describing:)을 통해 어떤 type이든 string으로 변환시켜줍니다. 주의할 점은 이 프로토콜을 채택한 후에 프로토콜의 instance를 바로 쓰거나 일반 제약조건로 쓰는 것은 비 추천 한다고 명시되어 있습니다. Why use CustomStringConvertible? Let's Deep dive. struct World { let popul..
[Swift] No1. Hi! Combine. 컴바인 전반적인 개념 파해치기 안녕하세요. 지금부터 컴바인을 소개 합니다! 배우면서 햇갈렸던 부분을 자세하게 풀어 나가려고 합니다. What is combine in swift? WWDC 2019 Introducing Combine. Apple에서 소개한 Swift framework입니다. asynchronous reactive programming을 할수 있는 특징이 있습니다. Reactive programming으로 Apple's native, Apple's platform인 Combine과 thrid-party인 Rx가 있습니다. 경력이 좀 있는 RxSwift와 Combine 뭐를 배울지 고민 했지만 결국 둘 다 배워 보려고 합니다. Will Combine Kill RxSwift? 유명한 글이 있어서 우선순위로 1순위로 컴바인 ..
[IOS/UIKit] NSAttributedString vs NSMutableAttributedString String이 있는데 왜 AttributedString을 사용하는 걸까? Swift에는 String이 있는데 왜 attributedString을 사용할까요?(attributedString이란 NSAttributedString, NSMUtableAttributedString으로부터 init된 string을 의미) AttributedString은 attributes 추가를 통해 format이 가능하기 때문입니다. attributes는 text의 font, kerning, backgroundColor, foregroundColor, shadow 등 NSAttributedString.Key를 통해 설정할 수 있는 것들을 의미합니다. UILabel을 예로 들자면, 그림1과 같이 text, attributedTex..
[Swift] 클로저 @escaping과 @non-escaping의 생명주기, 개념과 차이 탐구 [Swift] ver 5.7 에서 @escaping, @non-escaping closure의 차이를 탐구하는 글 입니다. "형 @escaping과 @non-escaping의 정확한 차이를 모르겠어" ... : 나도 모르겠는데 ??!?! 함수의 생명주기 @Escaping과 @non-escaping 클로저의 차이를 설명하기 전에 함수의 생명주기를 간단하게 설명하려고 합니다. 함수는 계속해서 호출 할 탠데 호출 될 때마다 메모리에 계속 함수들의 정보(매개변수, 함수 안 변수들 등)가 쌓일까요?? X. 함수가 호출을 하는 시점에 스택 영역에 할당 되었다가 함수가 끝나는 시점에 스택 영역에서 해제가 됩니다. 즉 호출을 하면 return 되는 시점에 메모리에서 해제 됩니다. 클로저 정의 여러번 사용되는 코드는 함..
[iOS] FireStore Database document에 값을 Codable타입으로 디코딩, 인코딩으로 저장, 꺼내오기!! 이번 글을 통해 Codable의 Decode를 통해 파이어베이스 Firestore Database의 collection document 필드 값을 쿼리를 통해 인스턴스로 얻거나 Encode를 통해 파이어베이스의 문서와 필드값을 추가하는 글을 다뤄볼 것이다. 사진 1과 같이 파이어베이스에 저장된 형식을 멤버 프로퍼티로 하는 구조체를 Codable타입으로 생성하면 된다. 이때 Encodable과 Decodable을 구현해야 한다. 파이어베이스를 이번 인스타그램 클론을 하면서 처음 다뤄보는데 Codable타입으로 받을 수 있지 않을까 하고 시도해 봤는데 성공적이어서 글로 남긴다.ㅎㅎ users 컬랙션의 문서는 uid로 등록했다. 문서의 필드는 JSON으로 아래와 같은 형식으로 사용자의 정보를 담도록 했다. C..
[ios/Git] can't find gem cocoapods (>= 0.a) with executable pod 에 관해 파이어베이스에서 Codable타입으로 파싱받기 위해 Podfile에서 pod 'FirebaseFirestoreSwift'를 추가했다. 그 후 설치를 하려고하니 이와 같은 에러가 떴다. pod install 하면 이런 에러가 뜨고.. 많은 시행착오를 겪고 잊고 있었던게 m1칩은 sudo arch -x84_64 를 이용해서 pod install을 했던 기억이.. 내가 해결한 결론은 cocoapods를 완전히 삭제하고 m1칩에 맞게 다시 설치하기로 결정했다. 이분의 글을 참고해서 ffi를 재 설치하고 https://kkh0977.tistory.com/1808 sudo arch -x86_64 gem install cocoapods 이것을 통해 cocoapods 설치를 하려고했는데 설치가 안됬다.(삭제는 잘 됬는..
[IOS/UIKit] UITextField left, right, top, bottom 패딩 넣는 방법!! 원래 뷰에 마진을 넣을 때 view.layoutMargins 속성에 UIEdgeInsets를 넣어서 padding을 설정했었다. 근데 UITextField는 placeholder모드랑 editing모드가 있어서 layoutMargins적용이 안되는 것 같았다(제 피셜입니다 정확x). 그래서 공식문서를 좀 읽어봤는데 TextField는 뷰의 text editable 영역의 양쪽 좌, 우에 위치한다. 이는 oveerlay left, right view로 불리는데 text 입력 공간 양 옆에 작은 공간이 있기에 이곳을 조정하면 된다. 이미지 또한 넣을 수 있다. 현재 textfield 상태이다. 앵커를 이용해 좌 우 offset을 20으로, topAnchor의 offset는 30으로 설정했다. 입력하는 순간 ..
[iOS] Codable로 String타입의 JSON데이터-> Data타입으로 Decode. | String -> UIImage decode? #5 최근에 AutoLayout과 MVVM을 공부하면서 Codable로 데이터 파싱하는 방법에 대해 알게 되었다. 그리고 내가 예전에 재은씨 실전편 공부하면서 만들었던 메모장 앱을 전부 리펙터링 하고 있다. 아.. 미리 말하자면 String타입의 JSON 데이터를 Codable struce 프로퍼티 UIImage로 변환시도는 아직 성공하지 않아서 우선 String타입의 데이터를 Data로 변환하는 과정을 기록했다. + Container의 의미와 decode(_:forKey:)에 대해 조금 정리를 했다.(틀린 부분이 있을 수 있습니다. 조언 주시면 감사합니다.) 로그인할 때 아이디 패스워드에 따라 로그인 성공시 사용자의 정보를 파싱할 수 있는 REST api가 있다. 로그인 성공 시 { "user_info" :..