Today I Learned/2024
어플 수정중에 컬렉션뷰를 수평 스크롤 할때 밑줄을 지우는 방법을 추가했음 해당 컬랙션뷰를 선언하고나서 기능을 추가할때private let puppyCollectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.scrollDirection = .horizontal layout.minimumLineSpacing = 0 layout.minimumInteritemSpacing = 0 let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionV..
Fix/뭐시기 브랜치를 만들고 해당 브랜치에서 작업하고 push 혹은 pull을 하려고 하는데 안됐음. 이유가 뭔가하니 fix와 fix/어쩌고 하는 두 브랜치를 사용하려고 하면, Git에서 브랜치 이름 충돌로 인해 커밋 또는 푸시가 실패하는 오류가 생기는 것이었음 오류 메시지: could not remove directory '/Users/t2023-m0072/Documents/파일이름/파일명/.git/refsremotes/origin/fix/gitignore': parent is not directory: Not a directory (-1) 해결하는 방법으로는git remote에서 fix 브랜치를 삭제하고 fix가아닌 다른 이름 fix/bugfix 등으로 이름을 변경하면됨. 예방하는 방법으로는브랜치를..
오늘부터 다시 TIL작성을 할 것임. 요즘 코딩에 손을 놨었는데, 주문한 새 맥북도 온김에 오랜만에 코딩 공부를 해봤음. 요즘은 기초 문법부터 다시 공부를 하고있는데 개념으로 다가가니 조금 어려운 느낌이 강하게 들었음. https://leedoseo.tistory.com/192 [iOS / Swift] 구조체 (Struct)구조체 (Struct): 구조체란 인스턴스의 값(프로퍼티)을 저장하거나 기능(메서드)을 제공하고 이를 캡슐화할 수 있는 Swift가 제공하는 타입(named type)임. 클래스처럼 인스턴스를 만들어서 실제 작업leedoseo.tistory.com https://leedoseo.tistory.com/191 [iOS / Swift] 클래스(Class)Swift는 객체 지향 언어이기 떄문..
모의 면접 준비UIKit 1. clipToBounds에 대한 설명clipToBounds는 뷰의 경계를 넘는 서브뷰가 잘릴지 말지 결정하는 프로퍼티임.true로 설정하면 뷰 경계를 벗어나는 서브뷰 부분은 안 보임. false로 설정하면 뷰의 경계를 넘어서도 서브뷰가 보임. 2. UIKit 클래스들을 다룰 때 꼭 처리해야 하는 애플리케이션 스레드 이름은 무엇인지 설명메인 스레드는 앱의 UI 업데이트나 사용자 입력 이벤트를 처리하는 역할을 담당하는데, 여기서 벗어나서 다른 스레드에서 UIKit 관련 작업을 하면 UI가 제대로 동작하지 않거나, 앱이 비정상적으로 종료될 수 있음.예를 들어, UILabel의 텍스트를 업데이트하거나 UIView의 색상을 변경하는 등의 모든 UI 관련 작업은 무조건 메인 스레드에서 ..
오늘은 Firebase CRUD에서 Read를 공부해봤다. 우선 다음에 Update에서 수정할거리를 만들기 위해 닉네임도 추가로 넣었다.import Foundationstruct User: Codable { let email: String let password: String let nickname: String} SignViewController에 닉네임 레이블 추가해서 가입할 때 닉네임도 적도록 구현import UIKitimport SnapKitclass SignUpViewController: UIViewController { private let emailTextField: UITextField = { let textField = UITextField..
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을 구독할 ..