swift 복습 12

의존성 주입

의존성은 객체가 다른 객체에 의존하여 동작하는 경우를 뜻합니다. 예시들 들어 ViewModel이 네트워크 요청을 처리하는 NetworkManager에 의존하는 상황을 생각할 수 있습니다. 이러한 의존성을 관리하는 방식이 의존성 주입 입니다. 의존성 주입을 요약하면 객체가 의존성을 직접 생성하거나 관리를 하지 않고, 외부에서 주입받아 사용하는 것 입니다. 의존성 주입이 필요한 이유? 1.결합도를 낮추기 위하여 객체가 만약 의존성을 직접 생산해버린다면 객체들 간의 결합도가 높이자고 코드변경이 어려워집니다. 만약, 특정 클래스에서 네트워크 요청을 처리하기 위해 특정 라이브러리를 사용한다고 생각해 볼 때 라이브러리를 교체하거나 기능을 확장하기 위해선 해당 클래스의 코드를 수정해야 합니다. 이러면 유지보수와 유연..

swift 복습 2024.11.17

CoreData -2

https://minsub12004.tistory.com/53 CoreData와 객체그래프 - 1CoreData는 애플이 제공해주는 객체 그래프 및 영속성 프레임 워크 입니다. iOS나 macOS 등에서 앱 데이터를 저장하고 관리하는데 사용합니다. 데이터베이스와 같이 데이터를 영구저장 할 수 있으minsub12004.tistory.com CoreData는 객체 그래프 관리와 관계 데이터 모델링에 강점이 있는  객체 지향 데이터 관리 시스템 입니다. 주요 요소 NSManagedObject: CoreData에서 데이터 객체는 NSManagedObject 로 생성됩니다 NSManagedObjectContext: 모든 데이터 작업의 트랜잭션을 관리하며, 데이터를 실제로 생성, 수정, 삭제, 저장하는 역할을 합니..

swift 복습 2024.11.10

CoreData와 객체그래프 - 1

CoreData는 애플이 제공해주는 객체 그래프 및 영속성 프레임 워크 입니다. iOS나 macOS 등에서 앱 데이터를 저장하고 관리하는데 사용합니다. 데이터베이스와 같이 데이터를 영구저장 할 수 있으며, 객체간 관계를 관리하고 다양한 조건의 쿼리를 통해 데이터를 효율적으로 검색할 수 있습니다. 개념객체 영속성 관리: CoreData는 데이터를 영구적으로 저장하여 앱이 종료되거나 다시 시작하여도 데이터가 유지될  수 있게 합니다. 객체 그래피 관리: CoreData는 단순 키-값 저장소가 아니라, 객체간 관계를 모델링하고 관리가 가능하여 데이터구조를 유지하기에 적합합니다. NSManagedObject 와 NSManagedObjectContext: CoreData는 데이터를 NSManagedObject 형..

swift 복습 2024.11.10

Unit test

Swift에서는 XCTest라는 기본 도구를 제공하기 때문에 빠르게 유닛 테스트를 할 수 있습니다. 유닛 테스트의 목적과 장점 1.유닛 테스트는 개별 함수나 메서드가 의도대로 동작하는지 확인하는 역할을 가지고 있습니다.   코드의 정확성과 안정성을 확보 할 수 있습니다. 2.코드베이스에 변경이 생기면 유닛테스트를 통하여 기존 기능이 정상 작동하는지를 빠르게 확인 할 수 있습니다. 3.테스트가 실패했을 때 오류 발생 지점을 쉽게 알 수 있기 때문에 디버깅이 쉬워집니다. 4.코드 리팩토링시 안정성을 가지게 됩니다. 프로젝트 생성시 유닛 테스트 포함 위의 사진을 보면 "Testing System 옵션 항목에 " Swift Testing with XCTest UI Tests" 가 선택되어 있습니다. 해당 옵션은..

swift 복습 2024.10.11

Combine의 개념

Combine 프레임 워크는 비동기 이벤트를 나타낼 수 있는 선언적 API 입니다. Combine 을 도입하게 되면 이벤트 처리 코드를 중앙 집중화하고 중첩된 클로저를 제거하여  코드 관리가 더욱 수월해 집니다.  주요 구성 요소로는 Publisher 과 Subscriber 으로 구성되어 있습니다. 여기서 Publisher 은 데이터를 발행하는 역할입니다. Subscriber 은 데이터를 구독하여 처리하는 역할을 합니다. 아래의 예시를 들어서 설명 해 보겠습니다. import Combinelet publisher = Just(20)let cancellable = publisher .map { value in return value * 3 } .sink { value in ..

swift 복습 2024.10.06

MVVM 디자인 패턴

MVVM(Model-View-ViewModel) 은 주로 UI 기반 앱에서 사용되는 디자인 패턴 입니다. MVVM 디자인 패턴은 주로 세가지의 구성요소로 나뉩니다.ModelModel은 앱에서 사용되는 데이터구조를 정의하는 부분 입니다. 앱의 데이터와 비즈니스 로직을 담당하며, 데이터를 가저오고 저장하는 역할을 합니다. ViewView는 앱의 UI로  사용자 인터페이스를 담당합니다. 전형적으로 UIView의 서브 클래스들을 의미합니다. ViewModelViewModel은 Model이 가지고 있는 정보를 View에 보여지는 값들로 변경하는 것을 의미합니다. View에서 발생하는 이벤트를 감지하고, 해당 이벤트에 맞는 비즈니스 로직을 수행하는 역할 입니다.   MVVM은 앱을 위의 세 가지 구성요소로 나누어,..

swift 복습 2024.09.22

TabView

TabView 는 탭 기반의 사용자 인터페이스를 구성하는데 사용하는 뷰 입니다.여러개의 다른 화면을 탭으로 전환하여 제공할 수 있습니다. 구성요소탭 아이템 : 각 탭은 특정 화면을 나타냅니다. 일반적으로는 아이콘과 레이블이 포함됩니다.탭 뷰: 여러 개의 탭을 포함하는 컨테이너 뷰 입니다. 간단한 사용법코드가 사진하나에 안담기기 때문에 코드블럭을 사용겠습니다. import SwiftUIstruct ContentView: View { var body: some View { TabView { HomeView() .tabItem { Image(systemName: "house") ..

swift 복습 2024.08.04

ScrollView

ScrollView 는 스크롤 가능한 컨텐츠를 구현하는데 사용합니다. 뷰를 스크롤 할 수 있는 영역으로 감싸주는 역할을 가지고 있습니다. 주요 기능으로는 수직 및 수평 스크롤: 컨텐츠가 화면을 넘어갈 경우 수직,또는 수평으로 스크롤 할 수 있습니다. 확대/축소: 이용자가 컨텐츠를 확대하거나 축소할 수 있습니다. 사용예제(수직)  ForEach(1...23, id: \.self): 1부터 23까지의 숫자를 반복해서 레이블을 생성합니다. id: \.self는 각 요소를 고유하게 식별하기 위해 사용됩니다. Text("실습 \ (index)") : Text 뷰를 생성하여 "실습1" "실습2" 와 같은 레이블을 생성합니다. index는 반복되고 있는 숫자 입니다. .frame(maxWidth: . infinity..

swift 복습 2024.08.04

List , form

List Swift의  List는 SwiftUI에서 동적인 목록을 생성하는 데 사용되는 UI 구성 요소입니다. List의 주요한 특징으로는 1.동적 데이터: List는 데이터 소스와 연결되어 있으며, 배열이나 다른 컬렉션의 데이터를 기반으로 항목을 생성합니다. 데이터가 변경되면 UI도 자동으로 업데이트됩니다. 2.스크롤:List는 스크롤 가능한 목록을 제공합니다. 목록을 쉽게 탐색할 수 있으며, 많은 데이터를 효과적으로 표시할 수 있습니다. 3.커스터마이징: 기본적으로는 텍스트 항목을 표시하지만, 이미지, 버튼, 사용자 정의 뷰 등 다양한 UI 요소를 바꿀 수 있습니다. List 사용 예시  해당 예제에 나온 코드를 설명해 보겠습니다. let items = ["초등학교", " 중학교", "고등학교", "..

swift 복습 2024.08.04

Stack

SwiftUI에는 레이아웃을 구성하기 위한 세 가지 주요 스택, HStack, VStack, ZStack이 존재합니다.HStackHStack은 수평으로 뷰를 배치하는 컨테이너입니다. 이 스택을 사용하면 여러 개의 뷰를 나란히 정렬할 수 있으며, 각 뷰는 수평 방향으로 위치하게 됩니다. VStackVStack은 수직으로 뷰를 배치하는 컨테이너입니다. 이 스택을 사용하면 여러 개의 뷰를 위아래로 정렬할 수 있으며, 각 뷰는 수직 방향으로 위치하게 됩니다. ZStackZStack은 뷰를 겹쳐서 배치하는 컨테이너입니다. 이 스택을 사용하면 여러 뷰를 같은 위치에 겹쳐서 쌓을 수 있으며, 가장 위에 있는 뷰가 가장 먼저 그려집니다.HStack:수평아주 간단한 예시를 들어 설명해 보겠습니다.  HStack을 이용하..

swift 복습 2024.08.04