Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이아웃 구현을 www.inflearn.com 프로젝트를 시작하면서 팀은 어떻게 코드 형식을 맞출지 정한다. 가독성을 더 좋게하기 위해 이런 저런 규칙을 정함과 동시에 줄은 언제 띄울지 가로줄은 얼마나 길게할지 들여쓰기는 어떻게 할지 정하는게 좋다. 규칙을 정했으면 각각 IDE에다가 세팅을 해줘야한다. v..
-
SwiftData 기본 사용법 Model, ModelContext, Query
엔티티 정의@Modelfinal class User: Identifiable { var name: String var email: String @Attribute(.externalStorage) var imageData: Data? init(name: String, email: String, imageData: Data? = nil) { self.name = name self.email = email self.imageData = imageData }}@Attribute 매크로 써서 외부 저장소에 저장가능좀 느리지만 큰 데이터 다루는 용도일반적인 내부데이터는 SQLite DB 사용하지만 이것은 Document 폴더에 들어간다고 함ex..
-
TextEditor 자동 스크롤 오류, cursor 위치 따라가기
TextEditor 자동 스크롤 오류, cursor 위치 따라가기ScrollView //전체 스크롤이 내려감 -- VStack -- TextEditor(title) -- TextEditor(content) // 여기위와 같은 구조로 되어있음 TextEditor 의 컨텐츠 내용이 길다보면 화면을 넘어가기 떄문에 ScrollView로 감싸서 아래로 쭉 스크롤이 가능할것이다.TextEditor(text: $store.content.sending(\\.setContent)) .focused($focusedField, equals: .content) .frame(minHeight: 160, maxHeight: .infinity) .font(.sy..
-
긴 text 내용이 minHeight에 잘리는 문제 (onAppear, task)
의도한 동작은 최소 160의 높이를 가지고 내용이 길수록 TextEditor도 늘어나야 함 TextEditor(text: $store.content.sending(\\.setContent)) .focused($focusedField, equals: .content) .frame(minHeight: 160) .font(.system(size: 16)) .padding(.top, 16)내용을 처음부터 입력 할떄는 정상 동작하지만처음부터 content 가 길 경우 160 높이 에서 잘림, 입력하면 동적으로 늘어남 OnAppear 이후에 컨텐츠 갱신..
-
Observable → Async / Await 으로 변환하여 API 처리하기 (AsyncThrowingStream, withCheckedThrowingContinuation)
기존 삭제 기능 은 Observable을 사용하여 구현되었다 private func deleteImage(accessKey: String) -> Observable { return networking.request(.deleteImage(accessKey: accessKey)).asObservable() } 문제점은 해당 API를 요청하는데 사용 하는곳은 async/await 구조로 되어 있다는것이다.그렇다고 Base 네트워크까지 건드릴수는 없기 떄문에 네트워킹 구현체 부분은 수정할수없다그럼 응답을 처리하는곳에서 Rx→ async/await 으로 바꿔주는 로직이 필요하다.EX> UsecasewithCheckedThrowingContinuation웹소켓이나 지속적인 응답을 받는..
-
SwiftUI TextEditor에 키보드 toolbar가 노출되지 않는 오류
ScrollView 내부에 두개의 TextEditor가있다 ScrollView { VStack(spacing: 0) { if case .post = store.contentType { TextEditor(text: $store.title.sending(\\.setTitle)) .focused($focusedField, equals: .title) .frame(minHeight: 30) .frame(maxWidth: .infinity) .font(.system(size: 18, weight: .bold)) .padding(.top, 24..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
SwiftData 기본 사용법 Model, ModelContext, QuerySwift 2025.05.08 09:03
엔티티 정의@Modelfinal class User: Identifiable { var name: String var email: String @Attribute(.externalStorage) var imageData: Data? init(name: String, email: String, imageData: Data? = nil) { self.name = name self.email = email self.imageData = imageData }}@Attribute 매크로 써서 외부 저장소에 저장가능좀 느리지만 큰 데이터 다루는 용도일반적인 내부데이터는 SQLite DB 사용하지만 이것은 Document 폴더에 들어간다고 함ex..
-
TextEditor 자동 스크롤 오류, cursor 위치 따라가기Swift 2025.04.18 17:20
TextEditor 자동 스크롤 오류, cursor 위치 따라가기ScrollView //전체 스크롤이 내려감 -- VStack -- TextEditor(title) -- TextEditor(content) // 여기위와 같은 구조로 되어있음 TextEditor 의 컨텐츠 내용이 길다보면 화면을 넘어가기 떄문에 ScrollView로 감싸서 아래로 쭉 스크롤이 가능할것이다.TextEditor(text: $store.content.sending(\\.setContent)) .focused($focusedField, equals: .content) .frame(minHeight: 160, maxHeight: .infinity) .font(.sy..
-
긴 text 내용이 minHeight에 잘리는 문제 (onAppear, task)Swift 2025.04.18 17:10
의도한 동작은 최소 160의 높이를 가지고 내용이 길수록 TextEditor도 늘어나야 함 TextEditor(text: $store.content.sending(\\.setContent)) .focused($focusedField, equals: .content) .frame(minHeight: 160) .font(.system(size: 16)) .padding(.top, 16)내용을 처음부터 입력 할떄는 정상 동작하지만처음부터 content 가 길 경우 160 높이 에서 잘림, 입력하면 동적으로 늘어남 OnAppear 이후에 컨텐츠 갱신..
-
Observable → Async / Await 으로 변환하여 API 처리하기 (AsyncThrowingStream, withCheckedThrowingContinuation)Swift 2025.04.16 16:35
기존 삭제 기능 은 Observable을 사용하여 구현되었다 private func deleteImage(accessKey: String) -> Observable { return networking.request(.deleteImage(accessKey: accessKey)).asObservable() } 문제점은 해당 API를 요청하는데 사용 하는곳은 async/await 구조로 되어 있다는것이다.그렇다고 Base 네트워크까지 건드릴수는 없기 떄문에 네트워킹 구현체 부분은 수정할수없다그럼 응답을 처리하는곳에서 Rx→ async/await 으로 바꿔주는 로직이 필요하다.EX> UsecasewithCheckedThrowingContinuation웹소켓이나 지속적인 응답을 받는..
-
SwiftUI TextEditor에 키보드 toolbar가 노출되지 않는 오류Swift 2025.04.16 16:31
ScrollView 내부에 두개의 TextEditor가있다 ScrollView { VStack(spacing: 0) { if case .post = store.contentType { TextEditor(text: $store.title.sending(\\.setTitle)) .focused($focusedField, equals: .title) .frame(minHeight: 30) .frame(maxWidth: .infinity) .font(.system(size: 18, weight: .bold)) .padding(.top, 24..