오블완 9

UISheetPresentation을 통해 수정, 삭제, 닫기 버튼 기능 구현

UISheetPresentationController를 사용하면 하단에서 올라오는 시트 스타일의 모달을 손쉽게 구현할 수 있습니다. UISheetPresentationController는 iOS 15 이상에서 사용할 수 있는 API로, detents를 통해 시트의 높이를 조절하고, 사용자가 원하는 높이에서 스크롤 가능하게 만드는 등 다양한 설정을 제공합니다.  1. ProfileFeedEditViewController 만들기먼저, "수정," "삭제," "닫기" 버튼이 포함된 ProfileFeedEditViewController를 만듭니다.import UIKitclass ProfileFeedEditViewController: UIViewController { // MARK: - Variable..

iOS/UIKIT 08:28:49

사용자 인터페이스(UI) 테스트와 단위(Unit) 테스트의 차이점은 무엇인가요?

UI 테스트와 단위 테스트는 iOS 애플리케이션의 품질을 높이기 위해 사용되지만, 두 테스트는 서로 다른 목표와 방식으로 수행됩니다. 1. 단위(Unit) 테스트단위 테스트는 애플리케이션의 특정 기능을 독립적으로 테스트하는 것을 목표로 하며, 보통 함수나 메서드 수준에서 작성됩니다.특징:독립적: 단위 테스트는 다른 코드에 의존하지 않고 독립적으로 실행되도록 설계됩니다.격리된 테스트: 외부 의존성(예: 네트워크 요청, 데이터베이스 접근 등)이 있을 경우, 이를 실제로 호출하지 않고 모의 객체(Mock Object)를 사용하여 테스트를 격리시킵니다.빠른 실행: 단위 테스트는 작은 코드 조각을 테스트하기 때문에 매우 빠르게 실행되며, 즉각적인 피드백을 제공하여 코드 수정 시 영향을 최소화합니다.구현 검증: 각..

정보/레벨 1 2024.11.15

FileManager 사용방법 - 수정

https://explorer89.tistory.com/217 FileManager 사용하는 기본 방법 (이미지를 경로로 저장하여 코어 데이터에 가져다 사용하기)1단계: 파일 경로 설정하기파일을 저장하거나 불러오기 위해 기본적으로 앱의 Documents Directory 경로를 설정합니다. 이 경로는 파일을 영구적으로 저장할 위치를 지정합니다.import Foundation// FileManagexplorer89.tistory.com  이전에 작성했던 FileManager 사용방법에서 수정할 내용이 있습니다.  이미지를 저장할 때, feedID를 사용하고, 피드 자체를 저장할 때도 feedID를 사용하여 혼용이 있었습니다. 그래서 발생한 문제가, 코어 데이터에 삭제 기능을 추가했음에도 테이블뷰에서는 삭제..

iOS/UIKIT 2024.11.14

Swift의 에러 처리 방법에 대해 설명해주세요.

Swift에서 **에러 처리(Error Handling)**는 프로그램 실행 중 발생할 수 있는 예외 상황에 대비하여 오류를 처리하고 안정적으로 코드가 실행될 수 있도록 도와줍니다. Swift는 명확하고 안전한 에러 처리를 제공하며, Error 프로토콜과 do-catch 구문, throws 키워드, try 구문 등을 사용해 에러를 처리합니다. Error 프로토콜Swift의 에러 타입은 Error 프로토콜을 준수하는 타입으로 정의됩니다.enum을 사용해 에러의 종류를 구체적으로 정의하고, 상황에 맞게 사용할 수 있습니다.enum NetworkError: Error { case invalidURL case noData case decodingFailed}  throws 키워드throws 키워..

정보/레벨 1 2024.11.13

의존성 관리 도구(CocoaPods, Carthage, Swift Package Manager)의 종류와 차이점은 무엇인가요?

iOS 개발에서 사용하는 의존성 관리 도구로는 **CocoaPods, Carthage, Swift Package Manager (SPM)**가 있으며, 각 도구는 라이브러리 설치, 버전 관리, 의존성 업데이트를 쉽게 관리할 수 있게 도와줍니다. 이들 도구는 설치 방식이나 프로젝트 통합 방식, 지원 기능 등에 차이가 있으며, 프로젝트 요구사항과 팀의 협업 방식에 맞춰 선택할 수 있습니다. 1. CocoaPods소개: CocoaPods는 iOS 개발에서 가장 오랫동안 사용된 의존성 관리 도구로, 라이브러리를 쉽게 추가하고 관리할 수 있도록 해줍니다. Ruby로 작성되었으며, iOS와 macOS 프로젝트에서 널리 사용되고 있습니다.설치 방식: 라이브러리를 Xcode 프로젝트 파일(.xcworkspace)을 통..

정보/레벨 1 2024.11.12

Swift에서 프로토콜(Protocol)이란 무엇이며, 어떻게 활용하나요?

Swift에서 **프로토콜(Protocol)**은 클래스, 구조체, 열거형 등이 특정 기능을 수행하도록 요구사항을 정의하는 일종의 청사진입니다. 프로토콜은 공통적인 기능이나 속성을 정의하고, 이를 준수하는 타입이 프로토콜에 명시된 요구사항을 구현하도록 강제할 수 있습니다. Swift에서는 프로토콜을 통해 유연한 구조를 만들고 다형성을 활용할 수 있습니다. 프로토콜의 특징과 역할구현 강제: 프로토콜은 정의된 메서드와 속성을 반드시 구현하도록 강제합니다. 따라서 프로토콜을 준수하는 타입이 일정한 기능을 갖추도록 보장할 수 있습니다.타입 간의 일관성 유지: 프로토콜을 통해 서로 다른 타입에 공통된 기능을 부여할 수 있으며, 이를 통해 다양한 타입을 일관되게 사용할 수 있습니다.다형성(Polymorphism):..

정보/레벨 1 2024.11.11

UIImage와 UIImageView의 차이

UIImage와 UIImageView는 둘 다 UIKit에서 이미지를 다루는 클래스이지만, 각각 역할이 다릅니다:UIImage:이미지 데이터 자체를 저장하는 객체입니다.보통 파일이나 URL 등에서 이미지를 로드할 때 사용합니다.이미지를 표시하거나 저장, 편집하는 등 다양한 용도로 사용할 수 있지만, 화면에 직접적으로 표시하는 기능은 없습니다.예: UIImage(named: "imageName")는 해당 파일 이름을 가진 이미지를 로드해서 UIImage 객체로 반환합니다.UIImageView:UIView를 상속받은 클래스로, 이미지를 화면에 표시하는 데 사용됩니다.UIImageView는 UIImage를 포함할 수 있으며, 이를 통해 이미지가 화면에 렌더링됩니다.다양한 속성을 이용해 이미지의 표시 방식(예:..

iOS/UIKIT 2024.11.10

Array와 List의 차이점이 무엇인지 설명해주세요.

Array와 List는 모두 데이터를 저장하는 자료구조이지만, 몇 가지 중요한 차이점이 있습니다. iOS 개발에서는 특히 두 자료구조를 활용할 때 성능과 사용성의 차이를 이해하는 것이 중요합니다. 1. 기본 개념Array: 고정된 크기의 메모리 블록에 데이터를 순차적으로 저장하는 자료구조입니다. 한 번 크기를 설정하면 변경할 수 없어서, 처음 설정한 크기에 맞춰 사용해야 합니다. Array는 메모리에서 연속적으로 데이터를 저장하기 때문에 데이터에 빠르게 접근할 수 있습니다.List: 동적으로 크기가 변경 가능한 자료구조입니다. 보통 연결 리스트(Linked List)로 구현되며, 데이터가 메모리에 연속적으로 저장되지 않아도 됩니다. 데이터가 추가될 때마다 메모리 공간을 새로 할당하거나 링크를 생성하여 크..

정보/레벨 0 2024.11.08

테이블뷰의 셀을 누르면 Sheet가 올라오게 하는 방법 (feat. UISheetPresentationController)

구현 목표 테이블뷰의 셀을 누르면 모달 형태의 sheet가 올라옵니다. 올라온 sheet를 보면 각 카테고리를 보여줍니다. 각 카테고리를 누르면 눌린 카테고리는 배경색과 글자 색이 변경됩니다. 선택완료 버튼을 누르면 sheet가 내려가고 테이블뷰의 셀에 선택된 카테고리가 표시됩니다. 🔥 카테고리 목록을 표시하는 방식  UIStackView 사용:UIStackView는 고정된 아이템 수를 표시할 때 간단하게 사용할 수 있습니다.이미지처럼 아이템이 고정되어 있고, 레이아웃이 바뀌지 않는다면 UIStackView를 사용해 각 카테고리를 레이블로 추가할 수 있습니다.그러나 화면 크기에 따라 자동으로 줄바꿈을 하거나, 동적으로 아이템 수가 변할 경우 레이아웃 조정이 어렵습니다.UICollectionView 사용..

iOS/UIKIT 2024.11.07