분류 전체보기
-
[XCode, SPM] Package.resolved file is corrupted or malformed;iOS/Trouble Shooting 2024. 4. 8. 23:36
Package.resolved file is corrupted or malformed; fix or delete the file to continue: unknown 'PinsStorage' version '3' at '...project....xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved'. 이 글은 XCode 15.2 버전에서 작성되었습니다. 위 오류는 Swift Package Manager의 파일이 잘 못 됨으로써 Package.resolved 파일을 수정하거나 지우라는 오류다. XCode를 15.3 버전에서 15.2 버전으로 다운그레이드를 하며 모든 프로젝트에 위와 같은 오류가 발생했고 해결방법은 단순하게 Package.r..
-
[iOS, App] 스텝퍼 개수 세기iOS/어플리케이션 2023. 11. 2. 11:44
스테퍼 개수 세기 스텝퍼 개수 세기 앱은 사용자가 운동 횟수, 운동 시간 및 휴식 시간을 입력하여 커스텀 운동 경험을 제공합니다. 앱을 시작하면, 사용자는 운동 반복 횟수, 운동 시간, 그리고 휴식 시간을 설정할 수 있습니다. "운동 시작" 버튼을 누르면, 사용자는 다음 페이지로 이동하여 실시간으로 시간 카운트와 남은 반복 횟수를 확인할 수 있습니다. 이 페이지에서 앱은 운동 시간과 휴식 시간을 구분하여 알려줍니다. 이를 통해 사용자는 운동을 보다 효과적으로 관리하고, 각 단계별로 휴식 및 운동 시간을 추적할 수 있습니다. 스텝퍼 개수 세기 앱은 건강한 생활습관을 돕기 위한 완벽한 도구입니다. 주요 기능 - 운동 시간 관리, 로컬라이징, 애플 워치 연동, 타이머, 알림 기술 스택 - Swift, Core..
-
[iOS, TDD] UIKit 컴포넌트 테스트하기iOS/TDD 2023. 11. 1. 12:42
지난 글에서 Swift 프로젝트에서 테스트를 진행하고 XCAssert에 대하여 알아보았습니다. https://hhproject.me/14 [iOS, TDD] Swift 테스트와 XCAssert 알아보기 지난 글에서 Swift 프로젝트에 테스트를 도입해봤습니다 https://hhproject.me/entry/Swift-TDD-Swift-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EC%9E%85%ED%95%98%EA%B8%B0 [Swift, TDD] Swift 프로젝 hhproject.me 이번 글에서는 UIKit으로 만들어진 뷰컨트롤러에 tableView를 넣고 정상적으로 하위 컴포넌트에 속해 있는지..
-
[iOS, App] TagCalendar - 일정 달력 플래너iOS/어플리케이션 2023. 11. 1. 11:42
TagCalendar - 일정 달력 플래너 맞춤형 태그를 사용하여 바쁜 일정을 관리할 수 있는 캘린더 앱입니다. 태그 기능을 통해 사용자의 일상을 체계적으로 관리할 수 있게 도와줍니다. 주요 기능 - 일정 관리, 태그 기능, 알림 설정 기술 스택 - Swift, Combine, CoreData, Git 이 프로젝트에서는 아래 링크에서 확인할 수 있는 UI 모듈을 작성하는 역할을 담당하였습니다. 이 과정에서 새로운 UI를 설계하고 구현하면서 여러 배움의 기회가 있었습니다. 또한, 일정과 태그 데이터를 관리하기 위해 CoreData를 활용하여 데이터를 영속적으로 저장하는 역할도 함께 수행했습니다. CoreData는 관계형 데이터베이스의 특성을 지니고 있어, 이를 통해 어플 내에서 데이터 관리 방법을 깊이 있..
-
[iOS, TDD] Swift 테스트와 XCAssert 알아보기iOS/TDD 2023. 10. 31. 13:26
지난 글에서 Swift 프로젝트에 테스트를 도입해봤습니다 https://hhproject.me/entry/Swift-TDD-Swift-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8F%84%EC%9E%85%ED%95%98%EA%B8%B0 [Swift, TDD] Swift 프로젝트에 테스트 도입하기 TDD는 소프트웨어 개발 방법론 중 하나로, 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하고, 해당 테스트를 통과하게 하는 코드를 작성하는 방법입니다. 이번 글에서는 Swift 프로젝트 hhproject.me 이번 글에서는 계산기의 기능(더하기, 곱하기)를 코드로 구현하고 테스트 적용하는 방법을 알아보겠습니다..
-
[Swift, TDD] Swift 프로젝트에 테스트 도입하기iOS/TDD 2023. 10. 31. 12:53
TDD는 소프트웨어 개발 방법론 중 하나로, 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하고, 해당 테스트를 통과하게 하는 코드를 작성하는 방법입니다. 이번 글에서는 Swift 프로젝트에 TDD방식으로 테스트를 도입하는 방법을 알아보겠습니다. 프로젝트를 생성합니다(Xcode 15.0) Include Tests에 체크표시를 하면 프로젝트 생성 시에 테스트코드를 작성할 수 있습니다. 체크를 안 했다면, Xcode 상단 File - New - Target 에 들어가 Unit Test Bundle을 추가해주시면 됩니다. 테스트를 추가했다면 아래와 같은 코드가 생깁니다. 커맨드(⌘) + U를 누른다면 아래 스크린 샷과 같이 초록색 체크 표시가 뜨며 테스트가 통과했다는 것을 알 수 있습니다. setUpWi..
-
[iOS, Swift] Callback 함수와 ClosureiOS/기본 원리 2023. 8. 30. 10:41
Callback 함수는 특정 작업이나 함수의 완료 이후에 실행되도록 설계된 프로그래밍 패턴을 가리킵니다. 이러한 Callback 함수는 특히 비동기 작업에 많이 활용됩니다. 웹 요청 또는 파일 읽기와 같은 작업이 시작될 때, 이러한 함수에 callback을 전달하면 작업 완료 시 해당 callback 함수가 자동으로 호출되어, 결과를 처리하거나 발생한 오류를 관리합니다. Swift 언어에서는 이러한 Callback 기능을 구현하기 위해 Closure를 활용합니다. func fetchData(completion: (String) -> Void) { // 데이터를 비동기적으로 가져오는 가상의 코드 DispatchQueue.global().async { let data = "데이터" // 메인 스레드에서 완료..
-
[iOS, Swift] Optional 타입iOS/기본 원리 2023. 8. 29. 14:25
스위프트에서 Optional은 값을 가질 수도 있고, 없을 수도 있다는 것을 나타내는 독특한 타입입니다. 다른 프로그래밍 언어들에서는 주로 null 또는 nil을 사용하여 값의 부재를 표현합니다. 그러나 이러한 접근은 여러 문제점을 일으키기도 했습니다. 스위프트는 이런 문제점을 극복하고자 Optional이라는 개념을 도입하여 값을 가지지 않는 상황을 보다 안전하게 다룰 수 있도록 했습니다. Optional 변수를 선언하려면 해당 변수 타입 뒤에 '?'를 추가하여 표현합니다. Optional 타입은 값이 'wrap'되어 있다고 볼 수 있습니다. 이렇게 감싸진 값을 직접 사용하기 위해서는 'unwrap' 과정이 필요하며, 이 과정을 통해 원래의 값을 추출할 수 있습니다. var name: String? = ..