전체 글 (380) 썸네일형 리스트형 😁 이런 날이 오네?... MovieClip 회고 👏 일단 앱을 완성했다.영화와 티비 시리즈 정보를 받아오고, 리뷰를 작성할 수 있다. 다른 사람들 회고록 보면 4주도 안되서 상당한 퀄리티의 앱을 개발한 걸 여럿봤다. 그에 비해... 나느 이걸 만드는데 거짓 8주는 걸렸다.. 주된 기능은 Swift + UIKit + Firebase정도이다. 구글 번역 API 를 통해 영화 정보를 번역했는데.. 이건 비용 문제로 중지 햇다. 여튼 이번 앱을 만들면서 제일 중요하다고 생각된건... 입력값, 출력값, 보내는 시점, 받는 시점, 보내는 양식, 받는 양식 대부분 오류가 발생한 경우가 데이터의 타입이 맞지 않거나, 시점이 잘못되었거나... 너무 많은 데이터를 효율적으로 처리하기 위한 관리 등.. 아 그리고 기획서.. 앱을 만들 때 큰 틀.. 🌈 텍스트 필드가 키보드가 가린다면? 키보드가 나타날 때, reviewTitleTextField가 가려지는 경우→ 뷰 전체를 키보드 높이만큼 올렸다가, 키보드가 사라지면 원래 위치로 복귀하도록 처리해야 합니다. ✈️ 전체 코드class ViewController: UIViewController { @IBOutlet weak var textView: UITextView! @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. setupKeyboardNotifications() .. 🔍 Firebase Storage listAll(completion:) 설명 https://explorer89.tistory.com/380 🔥 Firebase의 Storage 내에 저장된 여러 이미지 삭제하기!https://firebase.google.com/docs/storage/ios/delete-files?hl=ko Apple 플랫폼에서 Cloud Storage로 파일 삭제 | Cloud Storage for Firebase4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Apple 플explorer89.tistory.com 🔍 Firebase Storage listAll(completion:) 설명🔹 기능listAll(completion:)은 Firebase Storage에서 특정 경로 아래의 모든 파일(items).. 🤔 Completion Handler를 Combine으로 변경할 때 고려해야 할 점? 🤔 Firebase 에서 제공되는 기본 코드는 Completion Handler 기반... 이를 Combine으로 바꾸려면? 🎯 Combine 변환 시 고려해야 할 사항1️⃣ Future는 한 번만 실행되는 Publisher→ 비동기 작업이 여러 번 실행되면 PassthroughSubject나 CurrentValueSubject가 더 적절할 수도 있음.2️⃣ 비동기 요청 순서 보장→ listAll()이 완료되기 전에 delete()를 실행하지 않도록 해야 함.→ flatMap()과 collect() 또는 DispatchGroup을 사용하여 비동기 흐름을 제어.3️⃣ UI 업데이트는 receive(on: DispatchQueue.main)을 사용하여 Main Thread에서 실행→ listAll()과 .. 🔥 Firebase의 Storage 내에 저장된 여러 이미지 삭제하기! https://firebase.google.com/docs/storage/ios/delete-files?hl=ko Apple 플랫폼에서 Cloud Storage로 파일 삭제 | Cloud Storage for Firebase4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 Apple 플랫폼에서 Cloud Storage로 파일 삭제 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하firebase.google.comhttps://firebase.google.com/docs/storage/ios/list-files?hl=ko Apple 플랫폼에서 Cloud Storage로 파일 나열 | Cloud Storage for Firebas.. ❌ 리뷰 삭제 ... 왜 안되니? 🔍 GTMSessionFetcher 오류 분석GTMSessionFetcher 0x10141bab0 (https://firebasestorage.googleapis.com:443/v0/b/movieclip-6a2c3.firebasestorage.app/o?delimiter=/&prefix=users/L21gNu8OeIQa9BIDGuaoFwJmXD63/reviews/E6380A5A-CB53-490C-A044-D8E962791A2D/) was already running이 오류 메시지는 Firebase Storage에서 같은 URL에 대한 여러 개의 비동기 요청이 동시에 실행되고 있음을 의미합니다. 🤔 리뷰 삭제 1️⃣ Firebase Storage에서 이미지 삭제 2️⃣ Firestore 데이터 삭제?.. ❌ 컬렉션 뷰를 가로 스크롤할 때 다음 이미지가 살짝 보이는 문제 🔍 문제 원인layout.itemSize = CGSize(width: UIScreen.main.bounds.width, height: 300) UIScreen.main.bounds.width는 전체 화면 너비를 기준으로 설정됩니다.하지만, UICollectionView는 UITableViewCell 안에 있어서 contentView.bounds.width를 기반으로 설정해야 합니다.layoutSubviews()에서 collectionView.frame = contentView.bounds로 설정되어 있지만, layout.itemSize가 초기 생성 시점에 설정되므로 변경되지 않을 수 있음.따라서 컬렉션 뷰의 실제 크기보다 itemSize가 작거나 크면, 다음 아이템이 살짝 보이는 문제 발생. 🛠 해결.. ❌ 컴파일 오류 발생... // ❌ 컴파일 오류 발생snapshot.appendItems(viewModel.reviews, toSection: .myReviews)// Error: Cannot convert value of type '[ReviewItem]' to expected argument type '[ProfileItem]' 🔥 원인viewModel.reviews는 [ReviewItem] 타입이지만, Diffable DataSource는 ProfileItem을 다룬다.따라서 ReviewItem을 ProfileItem.review(ReviewItem)으로 변환해야 한다. 1. ProfileItem.review(ReviewItem)으로 변환하는 이유✅ Diffable DataSource는 ProfileItem 타입만 다룰 수.. 이전 1 2 3 4 5 6 ··· 48 다음