밤11시30분 넘어서 비엔티안 공항 도착함 공항에 가면 택시 서비스가 있음 거기가서 7달러 내고 택시타면 호텔까지 데려다줌 10달러 내면 3달러 잘 거슬러줌 밤에 도착하면 아무것도 안열음 그냥 잠 다음날 12시에 방비엥가는 벤을 예약함 블루투어에서 예약함 12시까지 할거없어서 숙소앞 은행에서 환전 하고 도가니 국수 하나먹고 다시 벤 대기. 이때 한 환전이 제일 좋았음 환전은 비엔티안에서 해야함 12시에 비엔티안에서 벤 출발하고 2시쯤 방비엥 도착함 이날 나나 게하에서 하루 묵었는데 서양인99동양인1 비율 양형들이랑 나중에 친해져야지 하고있는데 급 한국인 동행 구해져서 같이 안놀게 됨 ㅎㅎ 그냥 짐만두고 주변 밥집가서 밥먹고 블루투어가서 액티비티 예약함 집라인 카야킹 두개해서 26만낍 늦은오후라 딱히 할게..
-
UILabel에 HTML 적용하는 법: NSAttributedString 변환 및 스타일 적용
UILabel에 HTML 적용하는 법: NSAttributedString 변환 및 스타일 적용 요구조건에 의해 HTML 태그를 UILabel에 적용해야 했습니다. 이를 위해서는 HTML String을 NSAttributedString으로 변환해야 합니다. 1. HTML을 NSAttributedString으로 변환하는 코드 // ***htmlText : String***guard let data = ***htmlText***.data(using: .utf8) else { return nil}let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [ .documentType: NSAttributedString.DocumentT..
-
RxSwift: Observable.interval 타이머, 재구독 문제: 기존 구독 끊기
RxSwift: Observable.interval 문제 해결 및 동적 메시지 업데이트 가이드Observable.interval은 RxSwift에서 타이머 기능을 간단하게 구현할 수 있는 강력한 오퍼레이터입니다 [1].예를 들어, 다음과 같이 startTimer 함수를 사용하여 특정 종료 시간까지 1초마다 남은 시간을 업데이트하는 타이머를 만들 수 있습니다 [1].func startTimer(endTime: Date) -> Observable { let timer = Observable.interval(.seconds(1), scheduler: MainScheduler.instance).startWith(0) return timer.map { _ in formatRemainingTime(end..
-
SwiftUI TCA 파일 첨부 - 문서 파일 업로드, 다운로드, 저장 기능
https://inf.run/iDaq4 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | 복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. , SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대www.inflearn.com SwiftUI TCA 파일 첨부 - 업로드, 다운로드, 저장 기능이 글에서는 SwiftUI TCA 환경에서 파일 첨부 및 관리 기능을 구현하는 포괄적인 방법을 설명합니다. 사용자 친화적인 파일 첨부부터 서버 통신, 그리고 기기 내 저장까지 모든 과정을 상세히 다룹니다.1. 파일 불러오기 (I..
-
SwiftData 기본 사용법 Model, ModelContext, Query
이번 글에서는 SwiftData의 핵심 요소인 Model, ModelContext, Query의 기본 사용법을 자세히 다룹니다. SwiftData를 활용하여 효율적인 데이터 관리를 시작해 보세요! -------------------------------------------------------------------------------- 엔티티 정의 (Model) SwiftData에서 데이터를 저장하기 위해서는 먼저 엔티티를 정의해야 합니다. @Model 매크로를 사용하여 쉽게 데이터 모델을 생성할 수 있습니다. Identifiable 프로토콜을 채택하는 것이 일반적입니다.@Model final class User: Identifiable { var name: String var email..
-
SwiftUI TextEditor 자동 스크롤 버그 오류 해결 (커서 문제)
💬 문제 상황: 내 마음대로 움직이는 스크롤앱에서 긴 글을 작성하거나 수정하는 기능을 만들 때, 우리는 보통 TextEditor를 사용하고 내용이 길어지면 당연히 ScrollView로 감싸줍니다. 하지만 바로 이 지점에서 문제가 발생합니다.어떤 문제인가요?TextEditor에 텍스트가 화면을 넘어갈 정도로 길어집니다.수정을 위해 TextEditor의 윗부분을 터치(focus)합니다.분명히 위쪽을 터치했는데, 스크롤이 제멋대로 맨 아래로 쭉 내려가 버립니다.또 텍스트 입력시 스크롤이 되돌아 가지도 않고마지막줄 줄 넘김에도 스크롤이 커서를 따라가지 않는 문제도 있음아래는 바로 그 문제의 상황을 재현한 코드입니다.// MARK: 문제가 발생하는 코드struct ContentView: View { ..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
UILabel에 HTML 적용하는 법: NSAttributedString 변환 및 스타일 적용카테고리 없음 2025.07.11 15:27
UILabel에 HTML 적용하는 법: NSAttributedString 변환 및 스타일 적용 요구조건에 의해 HTML 태그를 UILabel에 적용해야 했습니다. 이를 위해서는 HTML String을 NSAttributedString으로 변환해야 합니다. 1. HTML을 NSAttributedString으로 변환하는 코드 // ***htmlText : String***guard let data = ***htmlText***.data(using: .utf8) else { return nil}let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [ .documentType: NSAttributedString.DocumentT..
-
RxSwift: Observable.interval 타이머, 재구독 문제: 기존 구독 끊기카테고리 없음 2025.07.03 09:38
RxSwift: Observable.interval 문제 해결 및 동적 메시지 업데이트 가이드Observable.interval은 RxSwift에서 타이머 기능을 간단하게 구현할 수 있는 강력한 오퍼레이터입니다 [1].예를 들어, 다음과 같이 startTimer 함수를 사용하여 특정 종료 시간까지 1초마다 남은 시간을 업데이트하는 타이머를 만들 수 있습니다 [1].func startTimer(endTime: Date) -> Observable { let timer = Observable.interval(.seconds(1), scheduler: MainScheduler.instance).startWith(0) return timer.map { _ in formatRemainingTime(end..
-
SwiftUI TCA 파일 첨부 - 문서 파일 업로드, 다운로드, 저장 기능Swift 2025.06.20 09:36
https://inf.run/iDaq4 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | 복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. , SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대www.inflearn.com SwiftUI TCA 파일 첨부 - 업로드, 다운로드, 저장 기능이 글에서는 SwiftUI TCA 환경에서 파일 첨부 및 관리 기능을 구현하는 포괄적인 방법을 설명합니다. 사용자 친화적인 파일 첨부부터 서버 통신, 그리고 기기 내 저장까지 모든 과정을 상세히 다룹니다.1. 파일 불러오기 (I..
-
SwiftData 기본 사용법 Model, ModelContext, QuerySwift 2025.05.08 09:03
이번 글에서는 SwiftData의 핵심 요소인 Model, ModelContext, Query의 기본 사용법을 자세히 다룹니다. SwiftData를 활용하여 효율적인 데이터 관리를 시작해 보세요! -------------------------------------------------------------------------------- 엔티티 정의 (Model) SwiftData에서 데이터를 저장하기 위해서는 먼저 엔티티를 정의해야 합니다. @Model 매크로를 사용하여 쉽게 데이터 모델을 생성할 수 있습니다. Identifiable 프로토콜을 채택하는 것이 일반적입니다.@Model final class User: Identifiable { var name: String var email..
-
SwiftUI TextEditor 자동 스크롤 버그 오류 해결 (커서 문제)Swift 2025.04.18 17:20
💬 문제 상황: 내 마음대로 움직이는 스크롤앱에서 긴 글을 작성하거나 수정하는 기능을 만들 때, 우리는 보통 TextEditor를 사용하고 내용이 길어지면 당연히 ScrollView로 감싸줍니다. 하지만 바로 이 지점에서 문제가 발생합니다.어떤 문제인가요?TextEditor에 텍스트가 화면을 넘어갈 정도로 길어집니다.수정을 위해 TextEditor의 윗부분을 터치(focus)합니다.분명히 위쪽을 터치했는데, 스크롤이 제멋대로 맨 아래로 쭉 내려가 버립니다.또 텍스트 입력시 스크롤이 되돌아 가지도 않고마지막줄 줄 넘김에도 스크롤이 커서를 따라가지 않는 문제도 있음아래는 바로 그 문제의 상황을 재현한 코드입니다.// MARK: 문제가 발생하는 코드struct ContentView: View { ..