apple/iOS, UIKit, Documentation 82

iOS SwiftData in UIKit

iOS SwiftData in UIKit연관 포스팅[iOS CoreData 간단한 CRUD](https://rldd.tistory.com/587)[iOS SwiftData in UIKit](https://rldd.tistory.com/588)[iOS CoreData 이론](https://rldd.tistory.com/586)[iOS CoreData Relationships](https://rldd.tistory.com/661) 이번에는 SwiftData를 UIKit에서 사용해보자!CoreData를 학습하기 전에는 SwiftData가 진짜 어려웠는데, 지금은 훨씬 배우기 쉽다. SwiftData를 사용하면 CoreData와 개념적으로 부합하고 있어서 학습하는데 더 쉽게 느껴졌다.또한 SwiftData가 가..

iOS CoreData 간단한 CRUD

iOS CoreData 간단한 CRUD 가장 기초적으로 CRUD 수행해보자 연관 포스팅[iOS CoreData 간단한 CRUD](https://rldd.tistory.com/587)[iOS SwiftData in UIKit](https://rldd.tistory.com/588)[iOS CoreData 이론](https://rldd.tistory.com/586)[iOS CoreData Relationships](https://rldd.tistory.com/661) Core Data를 사용하기 위한 사전준비- 프로젝트 생성시이렇게 생성하면 AppDelegate와 SceneDelegate에 기본적으로 Core Data를 위한 코드가 추가됩니다.먼저 SceneDelegate에서는 백그라운드로 넘어갔을때 현재 컨..

iOS CoreData 이론

iOS CoreData 이론 CoreData에 대해서 알아봅시다.1편에서는 개념과 이론을 중점으로 서술하며, 코드 설명은 2편에서 이어집니다.연관 포스팅[iOS CoreData 간단한 CRUD](https://rldd.tistory.com/587)[iOS SwiftData in UIKit](https://rldd.tistory.com/588)[iOS CoreData 이론](https://rldd.tistory.com/586)[iOS CoreData Relationships](https://rldd.tistory.com/661) Core Data란?- 코코아 개발 환경을 통해 제공하는 인 메모리(In-Memory) 방식의 데이터 관리 프레임워크.- 이를 통해 데이터베이스 한경과 유사하게 데이터 CRUD과정..

[Swift] plain ol' data(POD)

plain ol' data(POD) 👇 애플 문서에 나와있는 설명 [apple swift docs](https://github.com/apple/swift/blob/main/docs/ABIStabilityManifesto.md#type-properties) - 어떤 데이터 타입은 단순히 데이터를 저장하고 추가적인 복사, 이동 또는 소멸 의미가 없습니다. 즉, trivial(혹은 POD)으로 알려진 이 데이터는 그들의 비트를 복제하는 것으로 copy할 수 있고, deallocation를 통해 소멸된다. 만약 모든 멤버의 타입이 trivial이라면 그것또한 또한 trivial 타입입니다. - 어떤 타입이 비트 단위로 이동가능하다 라는 것은 그것의 주소에 의존하는 어떠한 사이드 테이블의 참조도 없을 때를 의미..

UILabel Inset and CornerRadius (UIKit)

UILabel Inset and CornerRadius (UIKit) UILabel에서 텍스트 주변으로 인셋을 주기 위한 코드 히스토리2023-06-23: InsetLabel 구현2025-01-21: CapusuleLabel 추가 목차InsetLabel 전체 코드InsetLabel 사용법CapsuleLabel 전체 코드 InsetLabel 전체 코드/// UILabel의 text와 컨테이너 사이의 inset값을 설정할 수 있는 커스텀 라벨final class InsetLabel: UILabel { /// text와 UILabel 사이의 inset값을 설정 var edgeInsets: UIEdgeInsets = .init(top: 2.0, left: 8.0, bottom: 2.0, ri..

[Swift] 커링(Currying)

# Currying 함수형 프로그래밍을 위한 Currying 학습. # 계기 - SwiftUI를 사용하여 View를 모듈화를 시도. - 더 잘 만들기 위해 함수형 프로그래밍의 해당 개념에 대한 학습이 필요하다고 느낌. # 목표 - 간단한 덧셈 구현 (Level 1) - 정규표현식 구현 (Level 2) - Reduce, Map, Filter 구현 - FlatMap, CompactMap 구현 (⚠️ 실패한 구현) : 기록하기 위해서 적어둠. # 참고에서는 UI와 관련한 클로저를 함수형으로 받아서 간결하게 처리하는 예제도 있으니 확인하면 좋음. ❗️ 실패한 구현인 이유 : 결과값이 다르게 나타남. # 파일 # 간단한 덧셈 구현 (Level 1) import Foundation public class LEVE..

[iOS] UIImage.Orientation

UIImage.Orientation 카메라의 어떤 방향으로 찍어도 나는 사용자가 봤을 때 위 방향으로 나타나기를 바랬다. 그러니까 똑바로 들고 찍어도, 오른손으로 눕혀 찍어도, 거꾸로 찍어도, 왼손으로 눕혀 찍어도 모두 동일하게 나타나기를 바랬다. 카메라의 경우에는 스마트폰의 앞 부분으로 촬영하면 front 스마트폰의 뒷 부부분으로 촬영하면 back 옵션이 존재한다. // 전면 카메라 let front = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back) // 후면 카메라 - 후면의 경우 아이폰에 카메라가 여러개가 되면서 옵션이 다양해짐. let back = AVCaptureDevice.default(.builtInWide..

such module 'RxCocoaRuntime'

such module 'RxCocoaRuntime' SPM으로 RxSwift 받아서 RxTest, RxBlocking 사용하려니까 위와 같은 에러가 나타남.  아래 깃헙 issue를 보듯이 해당 문제는 다른 개발자분들도 많이 겪고 있는것으로 보임.https://github.com/ReactiveX/RxSwift/issues/2277 No such module 'RxCocoaRuntime' · Issue #2277 · ReactiveX/RxSwiftShort description of the issue: I'm facing a strange issue and I don't know if it is a bug or I'm just missing something. I'm currently working fo..

Swift HTML 코드 로드하기

Swift HTML 코드 로드하기 🚨 문제상황 🚨 노션 웹 페이지를 webView를 통해 보여주고 있었는데, 로딩이 오래걸린다는 문제점이 있었음. 이를 개선해보고자 했고, 노션 페이지를 내보내기를 통해 HTML, PDF로 바꾸어서 서버에서 내려주는 방식으로 시도해보기로 함. 노션 페이지를 PDF로 내보내서, PDFKit을 사용하는 방법에는, 보여주고자 하는 페이지의 특성이랑 PDF로 뚝뚝 끊기는 것이 맞지 않아서 어색했으며, 무엇보다도 mac의 아이콘이 window화 되어서 예쁘지 않다라는 큰 문제점이 있었음 결국 직접 notion 주소를 호출하는 것이 아닌 html주소를 호출해보고자 함. 🌿 결과물 UI 🌿 - 왼쪽: 노션페이지를 webView를 통해 load한 것 ✅ 장점: 노션에 구성한 UI를 그대..

Moya Unable to parse empty data 대응하기

Moya Unable to parse empty data 대응하기  Moya 연습을 위해 사용한 사이트https://reqres.in/  문제상황Moya를 사용하면서 objectMapping 시에, 필드값 자체가 내려오지 않으면 정상적으로 처리되지 않는 문제가 있음.구글에 검색을 많이 해봤는데, 대부분이 Empty인 상황을 Error로 정의하고 처리하고 있는 것을 확인.다만, statusCode가 200번대라서 Error로 정의하는 것을 별로 좋지 못하다고 판단하여 다른 방식으로 처리해보고자 함.  전체 코드아래는 샘플 코드샘플 코드의 아래에 핵심 포인트를 주석으로 표기import Moyaimport RxMoyaimport RxCocoaimport RxSwiftimport Foundationprotoco..