본문 바로가기

Swift

(82)
Facebook 로그인 구현 + Firebase 연결 https://explorer89.tistory.com/310 페이스북 로그인 기능 구현https://developers.facebook.com/apps/?show_reminder=true Facebook business.facebook.comhttps://youtu.be/W8NzdN0h50I?si=fwvW92WfBDj__GZZ https://zoeful-log.tistory.com/131 [Swift] SwiftUI로 Facebook Login 구현하기Facebook 공식문서를 보고 정explorer89.tistory.com 이전에 작성한 게시글 입니다.  이번에는 Facebook + Firebase 로그인 구현을 Combine을 통해 진행했습니다.  여기서 Appdelegate.swift 내용도 반드..
ViewModel https://explorer89.tistory.com/82 ObservableObject와 @Published개체가 변경되기 전에 내보내는 게시자가 있는 개체 형식이다.?  @Published와 ObservableObject는 스위프트의 Combine 프레임워크에서 사용되는 속성 래퍼와 프로토콜이다.  ✅ 주로 SwiftUI와 함꼐 사용explorer89.tistory.com ObservableObject와 @PublishedObservableObjectObservableObject는 Combine 프레임워크에서 제공하는 프로토콜로, 객체의 상태가 변경될 때 이를 외부에 알리는 역할을 합니다.UIKit에서는 ObservableObject를 사용하더라도 SwiftUI와 같은 UI 자동 갱신은 없으므로, ..
setCustomSpacing(_:after:)의 역할 func setCustomSpacing(_ spacing: CGFloat, after arrangedSubview: UIView)setCustomSpacing(_:after:)의 역할스택 뷰는 기본적으로 모든 뷰 간의 간격을 동일하게 적용하는 spacing 프로퍼티를 제공합니다.그러나 setCustomSpacing을 사용하면 특정 뷰 이후에만 간격을 커스터마이징할 수 있습니다.// 특정 뷰 이후 간격 설정stackView.setCustomSpacing(10, after: separator)separator 뷰 이후의 간격이 10 포인트로 설정됩니다.나머지 간격은 stackView에서 설정한 기본 spacing인 5 포인트로 유지됩니다.
UICollectionViewCompositionalLayout 관련 데이터 소스 관리 CollectionViewCompositionalLayout을 사용하고, 다양한 데이터를 섹션별로 구성하려는 경우, 하나의 데이터 소스를 사용하는 것이 더 효율적입니다. 왜냐하면 CollectionViewCompositionalLayout은 기본적으로 섹션 단위로 데이터를 구분하여 UI를 구성하도록 설계되어 있기 때문입니다. 아래 함수는 외부 API를 요청하는 것으로, TMDB에 요청하여 그에 맞는 데이터를 받습니다. func fetchNowPlayingMovies(page: Int = 1) async throws -> TMDBData { ...}func fetchPopularMovies(page: Int = 1) async throws -> TMDBData { ...}func fetchTop..
async / await 사용해보기 이번 글에서는 Swift에서 비동기 작업을 수행할 때 사용하는 async, await, throws의 개념과 함께, 오류를 세분화하여 처리하기 위한 중첩된 do-catch 구조에 대해 알아보겠습니다. 이 글에서는 fetchNowPlayingMovies라는 실제 예제 함수를 중심으로 설명합니다. func fetchNowPlayingMovies(page: Int = 1) async throws -> TMDBData { // Base URL guard let url = URL(string: "https://api.themoviedb.org/3/movie/now_playing") else { throw APIError.invalidURL } // URL Component..
async/await란? async: 비동기 작업을 수행할 수 있는 함수나 메서드를 선언할 때 사용합니다.await: 비동기 작업의 결과를 기다릴 때 사용합니다. 기존에는 Swift에서 비동기 작업을 completion handler로 처리했기 때문에 코드가 복잡해지고 가독성이 떨어졌습니다.// 기존의 Completion Handler 방식func fetchData(completion: @escaping (String) -> Void) { DispatchQueue.global().async { completion("데이터 가져오기 완료") }}fetchData { result in print(result) // "데이터 가져오기 완료"}  이 방식은 중첩된 클로저가 많아지면 코드가 복잡해지고, 에러 ..
컬렉션 타입 3편 - 딕셔너리 딕셔너리 (dictionary) 는 순서와 상관없이 콜렉션에 같은 타입의 키 (key)와 같은 타입의 값 (value)를 저장합니다.각 값은 딕셔너리 내부에서 값에 대한 식별자로 동작하는 유니크한 키 와 조합됩니다.배열의 아이템과 다르게 딕셔너리의 아이템은 특정 순서를 가지고 있지 않습니다.특정 단어를 찾기위해 사전을 찾는 방법과 같이 식별자를 기준을 값을 찾을 때 딕셔너리를 사용합니다. 딕셔너리 타입 짧은 구문 (Dictionary Type Shorthand Syntax)Swift 딕셔너리의 타입은 Dictionary 로 적으며 Key 는 딕셔너리 키로 사용되는 값의 타입이고 Value 는 딕셔너리에 저장될 값의 타입 입니다.딕셔너리 Key 타입은 집합의 값 타입과 같이 반드시 Hashable 프로토콜..
컬렉션 타입 2편 - 집합 https://bbiguduk.gitbook.io/swift/language-guide-1/collection-types#accessing-and-modifying-an-array 콜렉션 타입 (Collection Types) | Swift배열, 집합, 그리고 딕셔너리를 사용하여 데이터를 구성합니다. Swift는 콜렉션의 값을 저장하기 위한 배열 (array), 집합 (set), 딕셔너리 (dictionary)와 같은 3개의 원시적인 콜렉션 타입 (collection types)bbiguduk.gitbook.io 집합 (set) 은 콜렉션에 순서와 상관없이 같은 타입의 다른 값을 저장합니다.let numbers = [1, 2, 3, 3, 2, 1]let uniqueNumbers = Set(numbers)..