| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- dataflow
 - DateFormatter
 - auth
 - authentication
 - Network
 - 알고리즘
 - async
 - SwiftUI
 - state
 - arkit
 - combine
 - Animation
 - gesture
 - GCD
 - ios
 - iphone
 - Concurrency
 - swift
 - sheet
 - Algorithm
 - 최적화
 - RxSwift
 - UIKit
 - SwiftData
 - stateobject
 - WWDC
 - date
 - firebase
 - withAnimation
 - CS
 
- Today
 
- Total
 
목록Swift/Etc (19)
XLOG
서버 개발자가 "UTC로 주고받자"고 했을 때...처음 서버 개발자와 협업할 때 "시간은 UTC로 주고받겠습니다"라는 말을 들었을 때의 제 반응은 이랬습니다."UTC? 왜 한국시간대가 아니지?"하지만 이유를 잘 몰라도 일단 규칙이니까 맞춰서 작업했죠. 그냥 서버에서 요구하는 형식으로 보내고, 받은 데이터를 화면에 표시하면 되는 거 아닌가 싶었어요.사이드 프로젝트에서 만난 현실의 벽사이드 프로젝트에서 반복 스케줄 기능을 구현하게 되었을 때, 시간의 복잡성을 본격적으로 체감했습니다. "매주 화요일 오후 3시에 알림" 같은 기능 말이죠.첫 번째 깨달음: Date는 절대 시점이다let now = Date()print(now) // 2024-01-15 05:30:00 +0000let formatter = Date..
최근 디버그 과정 중 continuation 쪽 문제를 해결하면서 내용을 한번 정리해두는게 좋다는 생각이 들어서 시작한 글입니다.swift의 async/await는 복잡한 비동기 코드를 깔끔하게 정리해주는 강력한 기능입니다. 그런데 기존의 콜백 기반 API를 어떻게 async 함수로 바꿀 수 있을까요? 그 때 등장하는 개념이 바로 continuation입니다.이 글에서는 continuation이란 무엇인지, 그리고 Swift에서 제공하는 관련 API들을 쉽게 설명해보겠습니다.🧠 continuation이란?간단히 말해, 중단된 함수의 흐름을 다시 이어줄 수 있는 객체입니다. Swift의 async 함수는 실행을 잠시 멈췄다가 다시 이어서 실행할 수 있어야 하는데, 그 주체가 continuation입니다...
1. 문제 및 원인요즘 Swift6 의 concurrency와 관련된 checking 이 강화되면서 Non-sendable 과 관련된 경고를 많이 보곤한다.SwiftData 가 나오고 SwiftUI 에서 View 내부에서 query 를 직접 입력해서 View에 바로 적용할 수 있으나 기존 Repository Pattern 을 쓰던앱에 아키텍쳐를 준수하기 위해 ModelContext 접근을 단일 Thread 를 보장하기 위해 ModelActor 를 활용했고, 이를 Repository 에 주입하여 DTO 로 변환을 하면 되겠다고 단순하게 생각했다.import Foundationimport SwiftData@Modelpublic class SwiftDataItem { @Attribute(.unique) ..
1. 문제public enum TransactionType: String, Codable, CaseIterable, Sendable { case income = "income" case fixedExpense = "fixedExpense" case variableExpense = "variableExpense"}@Modelfinal class Category { @Attribute(.unique) var id: UUID var name: String var orderIndex: Int var transactionType: TransactionType var isActive: Bool @Relationship(deleteRule: .cascade, inver..
이전 회사에서 혼자 AR 을 담당해서 개발을 했었는데, 바쁘다는 핑계로 제대로 정리를 한적이 없었다....그래서 시작하게 된 AR Posting1. ARKit, RealityKit 은 무엇일까?ARKitAR을 사용하려면 ARKit 을 쓰면된다고 생각하지만 100% 맞다고 할 순 없다. 실제 우리가 App 을 만들때 UI 가 있어야 하지만, ARKit 은 우리가 사용할 수 있는 UI 요소가 존재하지 않는다. ARKit 은 AR 환경을 구축하기 위해 내가 가지고 있는 하드웨어(iPhone, iPad)에 장착되어 있는 센서들을 통해 데이터를 받아와 AR 환경을 만드는데 도움을 주는 프레임워크이다.RealityKitRealityKit 공식 문서 페이지에서 말해주듯이 3D 시뮬레이션 및 렌더링 기능을 제공하는 프..
회사에서 근무를 하며 백엔드에서 날려주는 상황별 Error Code 는 매우 다양했다. 하지만 Client 측에선 다양한 Error Code 라도 유저가 할 수 있는 Action 은 그리 다양하지 않았다.그리고 회사에서 TCA 를 적용해서 프로젝트를 진행하였기 때문에 Error Handling 을 Composable 하게 구성할 수 없을까 고민을 했다. 그래서 Error Handling 을 위한 Redcuer 와 View 를 만들어 각 Feature 적용해야 겠다는 생각을 했다.우선 내가 throw 할 수 있는 Error Case 와 해당 Error 마다 할 수 있는 액션들의 정의가 필요했다.//// Created by Sooik Kim on 5/15/24.//import SwiftUI// API 통신..
TDD(Test Driven Development) 는 테스트 주도 개발이다. 초기 공부를 시작하다보면 자연스럽게 접하게 되는 용어이다. 왜 그런걸까? Swift 를 공부하면서 XCTest를 알기전, View를 만들고 확인하고 내부 로직을 만들어 View 붙이고를 반복했다. 메인 페이지라면 크게 문제는 없었지만 프로젝트 규모가 커지고, 내부에 view들을 확인하기 위해 simulator 를 돌리고, 원하는 페이지까지 이동해서 확인하고, 문제가 있으면 수정해서 다시 로직을 수정하고를 반복했다. 가끔은 Playground 를 만들어 테스트 해보고 프로젝트에 적용하기도 했다. 상당히 비효율적이다. XCTest 를 사용하면 이와 같은 문제를 해결할 수 있다. 각종 테스트를 할 수 있는 프레임워크다. 프로젝트 생..
[참고] 이 글은 ARKit의 사용법 보단, AR Kit을 사용하기 위해 사전 지식에 대한 정리라는 점을 참고해주시기 바랍니다. 필요에 의해 ARKit에 대한 공부를 해봤다. 몇년 전부터 많이 들려오는 AR(Augmented Reality)인 증강현실, 현실 세계에 가상을 더한 컨텐츠, AR 뜻만 알아도 AR kit은 증강현실을 구현하는 프레임워크라는 것을 알 수 있다. 역시나 공식문서를 보면 2d, 3d 요소를 라이브뷰(카메라로 찍는 현실세계) 에 표현하는 증강현실을 위한 프레임 워크라고 한다. 여기서 우리는 라이브뷰, 즉 카메라로 부터 현실세계의 데이터를 수집해야 한다. QR code 스캐너에 관한 글을 작성할 때 처럼 session을 사용할 것이라는 느낌이 온다. session을 시작하게 되면 처음..
이전 회사 면접에서 내 포트폴리오에 RestApi 를 활용한 프로젝트가 없어서, 회사에서 이런 요구사항이 오면 어떻게 해결할지에 대한 질문을 받았었다. 다행히 이전에 캘린더 관련 프로젝트를 진행하며 대한민국 공휴일 데이터를 어떻게 가져올 수 있을까 고민하면서 Rest Api 에 대한 공부를 했었다. 1. Rest Api 란 무엇일까? RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 출처 : https://aws.amazon.com/ko/what-is/restful-api/ 2. Swift에서 무엇을 사용할까? 그건 바로 URLSession, URLRequest 이다. URLSession 에 URLRequest를 사용하여 통신프로토콜을 사용..
금일 Apple Developer 에서 디자인 챌린지를 열었다. 내용은 사용자 경험 측면 탭바, 네비게이션, 모달 사용에 대한 내용이었다. 우선 기본 베이스는 WWDC17 Essential Design Principles 를 기반으로 만들어 졌다고 한다. 그래서 영상을 확인했더니, 프레젠테이션의 내용이 비슷한 것이 많았다. 가장 먼저 들었던 내용들의 핵심을 나름 정리해 보자면, 앱은 직관적이어야 한다는 것이다. 앱의 화면은 정보를 주기 위함이다. 그렇기에 표지판에 비유를 했다. 앱은 단순히 영상처럼 정보를 주기만 하는 것이 아니다. 사용자와의 인터렉션을 통해 새로운 정보를 전달하거나, 되돌아갈 수 있어야 한다. 그렇게 화면에는 어디로 갈 수 있는지, 어디로 갈 건지, 지금 내가 어디인건지 등등을 표시해 ..