전체 글
2일전에 공부하던 Firebase를 이어서 공부했음.데이터가 안넘어갔었는데 코드를 수정하니 Firebase에 데이터가 저장이 됐음.이유는 Auth에서 로그인 방식을 지정하지 않았는데, Auth방식을 사용하고 있던 것임.일단은 CRUD를 공부하기 위한 것이니 Auth방식을 사용하지 않고 데이터를 생성해서 저장하는 것으로 바꿈. ViewControllerimport UIKitimport SnapKitclass SignUpViewController: UIViewController { private let emailTextField: UITextField = { let textField = UITextField() textField.placeholder = "Email" ..
오늘은 Firebase에 대해 공부하려고 Firebase에 프로젝트를 만드는 방법을 알아봤음. 1. 처음 사이트를 가입하고 해당 창에서 프로젝트 만들기를 누름.(나는 공부하려고 만든 Mystudy가 이미 있음)2. 이렇게 프로젝트 이름을 정해주고 계속버튼을 눌러서 쭈욱 넘겨주면됨.3. 기다리다보면 해당 창에 오게 되는데 우측에 빌드 부분에 Authentication은 로그인 인증, Firesotre Database는 firestore인데 회원가입같은거를 했을 때 그 유저의 정보를 담는 기능을 하는 것 같음. 그리고 storage는 이미지등을 저장하는 곳임(아래 내리다보면 있음) 일단은 연습이니까 저 세개를 만들어서 공부를 해보겠음.우선 Firebase를 공부하기위해 프로젝트를 생성함. MVVM패턴으로 연..
오늘은 모의 면접을 대비해서 면접 예상 질문을 공부해봤다.Extension에서 저장 프로퍼티를 사용할 수 있나요? 불가능함. extension에서는 저장 프로퍼티 추가 못 함. extension은 기존 클래스나 구조체에 새로운 기능(메서드, 연산 프로퍼티, 초기화 함수 등)을 추가할 때만 사용 가능함. 저장 프로퍼티는 인스턴스에 메모리를 차지하는데, extension에서는 그걸 허용하지 않기 때문임.Array에 대해서 설명해주세요.Array는 같은 타입의 값들을 순서대로 저장하는 컬렉션 타입임. 인덱스를 사용해 요소에 접근할 수 있음. 배열은 Array 형태로 선언되고, 요소의 타입은 제네릭으로 정의됨. 배열은 가변적일 수 있고, append, remove, insert 같은 메서드를 사용해 요소를 추가..
오늘은 Rxswift공부를 했음. 개발자 소들이님 블로그를 보면서 공부를 해보고 있는데 정리본은 맨 밑에 링크를 걸어둘거임. 우선 Rxswift를 공부하면서 느낀건 UIKit에서 비동기 작업을 처리할 때 그 코드가 간소화 되는 점이 좋았음. 추가로 다양한 UI 요소간의 이벤트 혹은 액션 등의 처리를 통일된 방식으로 처리할 수 있어 버튼 클릭, 텍스트 필드 입력 등등 하나의 코드로 관리할 수 있던 점이 좋았다.물론 공부하는데 너무 어렵지만, 열심히 공부해봤음. https://leedoseo.tistory.com/178 RxSwift Subject의 Observable 역할1. Subject란?: Observer이자 Observable임. Observer이기 때문에 하나 이상의 Observable을 구독할 ..
1. Subject란?: Observer이자 Observable임. Observer이기 때문에 하나 이상의 Observable을 구독할 수 있으며, 동시에 Observable이기 때문에 새로운 항목(item)들을 방출하거나 재방출 할 수 있음 이해가 어려우니 간단하게 Observable과 Observer의 개념을 정리해보겠음 Observable이란, 비동기 이벤트를 관찰이 가능한 형태로 만든 것으로, 해당 이벤트가 발생했을 때, 항목(item)이란 것을 방출(emit)함.Observer란, 내가 원하는 비동기 이벤트를 방출하는 Observable이 있을 경우, 해당 Observable을 구독(Subscribe)하여, 항목이 방출되었을 때 그 항목을 받아 처리할 수 있음. 그렇다면 Observable은 어..
FireBase 공부하기! 전체코드를 보면 이러한 형태인데 지인의 코드를 빌려 공부를 하기로 했다.import Foundationimport FirebaseFirestoreclass HistoryRepository { private let db = Firestore.firestore() static let shared = HistoryRepository() // 사용내역 조회 func fetchHistoryInfos(for email: String) { db.collection("history").whereField("email", isEqualTo: email).getDocuments { (querySnapshot, error) in if ..
오늘은 RxSwift로 코딩을 시작했다. 처음 써보는거라 어색한 부분도 많은데 기능을 추가하고 액션을 넣을 때 코드가 좀 더 간결해지는 것을 느꼈다. UIKit에서 UI와 로직을 연결하는 코드들을 바인딩해서 한군데서 처리하는게 좋았다. 그 부분의 코드를 보면// MARK: - Setup Bindings private func setupBindings() { let tapProfile = UITapGestureRecognizer() profileImageView.isUserInteractionEnabled = true profileImageView.addGestureRecognizer(tapProfile) tapProfile.rx..
Observable 생성하는 방법(empty, never, range, interval, timer, defer)1. empty: 어떠한 항목(item)eh 방출(emit)하지 않고, 즉시 onCompleted()를 호출하여 정상적으로 종료되는 Observable을 생성함import UIKitimport RxSwiftclass ViewController: UIViewController { let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() test() } func test() { let observa..
Observable 생성하는 방법(just, of, from, create)1. just: 단 1개의 항목(item)만을 방출하는 Observable Sequence를 생성함import UIKitimport RxSwiftclass ViewController: UIViewController { // 구독을 끝낸 뒤 구독을 해제하기 위한 disposeBag(가방)생성 let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() test() } func test() { let observable = Observabl..