목록iOS/Swift (22)
BIBI BLOG

SwiftUI로 앱을 만들 때, Webview를 띄우는 방식이 귀찮고 복잡했어요. iOS 26부터는 SwiftUI에서 WebView를 아주 쉽게 쓸 수 있게 바뀌었습니다!이 글에서는 WebView의 변화된 코드와 최신 방식으로 웹을 앱에 넣는 법을 쉽고 자세히 알려드리겠습니다. iOS26이전 방식: WKWebView 래핑(감싸기)iOS 26 이전에는 SwiftUI에 웹뷰가 없었어요.그래서 UIKit의 WKWebView를 UIViewRepresentable로 감싸서 써야 했습니다.import SwiftUIimport WebKitstruct WebView: UIViewRepresentable { let url: URL func makeUIView(context: Context) -> WKWebV..

🔍 Swift 문자열 포함 여부 확인 – contains 사용법과 주의할 점(How to use Swift Contains) Swift에서 문자열 안에 특정 단어가 포함되었는지 확인하고 싶을 때 가장 많이 사용하는 메서드는 바로 contains(_:) 입니다.하지만 문자열, 배열, 비교 방향에 따라 결과가 달라질 수 있습니다. 예시를 보면서 확인해주세요. :)✅ 기본 사용법: String.containslet url = "https://www.example.com/product/12345/detail"let keyword = "example"if url.contains(keyword) { print("도메인이 포함됨 ✅")}출력: 도메인이 포함됨 ✅contains는 문자열 안에 특정 부분 문자열이..
1. self 란?정의: self는 현재 인스턴스(객체) 자신을 가리키는 키워드입니다.언제 사용하나요?: 클래스나 구조체 안에서 자기 자신의 프로퍼티나 함수를 부를 때 사용합니다.예시class Person { var name: String init(name: String) { // 이니셜라이저에서 매개변수와 프로퍼티 이름이 같을 때 구분하기 위해 사용합니다. self.name = name } func sayHello() { // 자신의 name 프로퍼티를 사용합니다. print("안녕하세요, 저는 \(self.name)입니다.") }}let student = Person(name: "민수")student.sayHello()// ..

SwiftUI 에서 “Modifying state during view update” 경고가 뜨는 이유와 해결 방법SwiftUI를 사용하다 보면, “Modifying state during view update, this will cause undefined behavior”라는 경고를 마주칠 수 있다. 이 경고가 뜻하는 바는, 화면이 그려지는 중에 상태(@State, @ObservedObject 등)를 직접 수정하면 SwiftUI 내부에서 렌더링 재진입이 발생해 예측 불가능한 동작이 일어날 수 있다는 것이다.원인SwiftUI는 상태 변화 → 뷰 다시 그림 → (필요시) 또 상태 변화 구조를 가진다.만약 “뷰가 그려지는 바로 그 시점”에 또 상태를 건드리면, 아직 완료되지 않은 렌더링이 중첩 호출될 가능..

withCheckedThrowingContinuation는 Swift 5.5+에서 제공하는 Swift Concurrency API 중 하나로,“콜백(callback) 기반 비동기 함수”를 async/await로 변환하기 위한 도우미입니다.쉽게 말해, “completion handler” 스타일 코드를 async throws 함수로 래핑해 주는 역할이죠.1. 사용하는 이유Swift의 await 문법은 비동기를 직관적으로 처리할 수 있게 만듭니다.하지만 기존에는 많은 함수들이 콜백(completion block)을 사용해 결과를 반환합니다.이런 콜백 함수를 async 함수로 바꾸려면, “코드가 완료되는 시점”에 await 체계를 알려줘야 하는데,그 과정을 withCheckedThrowingContinuati..

Swift의 Result 타입 살펴보기🏋️♀️Swift에서 Result 타입은 성공(.success)과 실패(.failure)를 간단히 표현할 수 있어, 네트워크 에러나 비동기 작업 등에서 자주 활용됩니다.하지만 보통 “결과 + 에러” 정도만 쓰고 넘기는 경우가 많습니다.이 글에서는 Result의 여러 기능을 좀 더 자세히 살펴보겠습니다.1. Throwing 함수를 Result로 바꾸기 (Result(catching:))일반적으로 Swift에서 throws 함수를 호출할 때,do-try-catch 구조를 여러 곳에서 중복으로 써야 하는 문제가 생길 수 있습니다.// 기존: 함수를 직접 try-catch로 호출func complexDataProcessing() throws -> ProcessedData..

[Swift] SOLID 원칙 살펴보기iOS 앱 개발을 진행할 때, 코드가 복잡해지고 유지보수가 어려워지는 상황을 피하려면 SOLID 원칙을 도입하면 좋습니다.이 문서에서는 SRP, OCP, LSP, ISP, DIP 다섯 가지 SOLID 원칙을 간단한 예시와 함께 살펴보겠습니다.1. 단일 책임 원칙 (SRP: Single Responsibility Principle)"클래스는 단 하나의 책임만 가져야 한다."한 클래스가 여러 역할을 동시에 맡고 있으면, 수정이 생길 때마다 코드가 불안정해집니다.예시: 병원 관리 시스템❌ 잘못된 예시class HospitalManagement { func registerPatient() { ... } func generateBill() { ... } fun..

[SwiftUI] SVG 이미지를 로드하는 방법🖼️(How to Load SVG Images in SwiftUI)이번글에서는 SDWebImage와 SDWebImageSVGCoder를 이용하여 SVG 이미지를 표시하는 방법을 알려드리겠습니다 :)먼저 두 라이브러리를 세팅하는 방법부터, SVG 이미지를 로드하는 과정을 단계별로 정리해볼게요.1️⃣ 필요한 라이브러리 설치SDWebImageSwiftUI이 라이브러리는 SwiftUI에서 인터넷 이미지를 로드하기 편리한 기능을 제공합니다.SDWebImageSVGCoderSVG 이미지를 SDWebImage에서 해석할 수 있도록 도와주는 코더입니다.– 이 패키지를 설치하면 SDWebImage도 자동으로 설치됩니다.GitHub 링크:SDWebImage/SDWebImag..