iOS 개발

iOS 개발/HIG

[HIG] Human Interface Guide 정의

iOS 신입 개발자로써 공부해두면 좋을 게 무엇이 있을까 고민하다가 HIG에 대해 자세히 공부한 시간은 없다는 것을 깨달아 남는 시간을 활용해 HIG를 정리하는 시간을 갖고자 했다. HIG란? Human Interface Guide의 약자로, 애플스러운 앱을 만들기 위한 디자인 가이드 라인 HIG가 필요한 이유 - 리젝 사유 대비 - 디자이너, 기획자와의 원활한 소통 앱 스토어에 2개의 서비스를 출시하면서 HIG를 따르지 않아 리젝이 된 경우도 있었고, 기획자 디자이너 분들이 설계한 화면을 보고 이 부분은 리젝 사유일텐데..? 이렇게 생각한 적이 있었기 때문에 내가 확실히 알아두어야 할 필요가 있다고 생각했다. HIG의 핵심 가치 1. 명확성(Clarity) - 글자는 어떠한 크기로 설정하던 알아보기 쉬..

iOS 개발/RxSwift

[RxSwift] RxSwift와 MVVM 예제 - 로그인

대부분의 모든 서비스에서 필요한 로그인을 예제로 들어 RxSwift와 MVVM에 대해 공부해보고자 한다. snapkit과 then 라이브러리를 활용한 예제가 블로그에 잘 정리되어 있어서 해당 코드를 참고했다. 참고 사이트: https://pino-day.tistory.com/15 우선, 로그인 및 회원가입에서는 유효성 검증 과정을 필요로 한다. 유효성 검증 과정의 예시로는 이메일과 패스워드 형식이 맞는지, 텍스트 필드에 입력값이 존재하는 지 등이 있겠다. [ViewModel] ViewModel은 View를 위한 Model이라는 뜻으로 알고 있다. 즉, 현재 우리는 로그인 기능을 만들고 있으므로, ViewModel에는 로그인 기능에 필요한 비즈니스 로직이 들어가야 한다. 유효성 검증의 예시로 이메일과 패스..

iOS 개발

[iOS 개발] 기존 앱을 App Store에서 업데이트 하는 방법

쉽고 프로젝트를 App Store에 등록하고 1달 가량의 시간이 지났다. 심사에 통과하자 마자 개인정보처리방침 부분이 잘못되어 버전 업데이트(v1.0.1)를 다음 날 진행하고, 그 뒤로 딱히 버전 업데이트를 진행할만한 피드백을 받지 못했었다. 그러던 중 택배 API의 기간이 만료되어 해당 부분을 교체해주기 위해 앱 버젼을 업데이트해야 될 일이 발생했다. 그래서 전에 수정해야 될 사항들을 정리해 해당 기능들을 업데이트하고 다시 심사를 진행했다. 앱을 업데이트 하는 과정은 다음과 같다. 1. 해당 사진의 Version 부분을 해당하는 버젼으로 바꿔준다. 2. 그 뒤로는 앱 빌드와 동일하다. 실제 기기로 시뮬레이터를 변경 해준 후, Product -> Archive 클릭 후 Distribute App 클릭 3..

iOS 개발/Combine

[Combine] Combine 정의(0)

프로젝트 쉽고를 SwiftUI로 진행하는 것을 채택하고 비동기 프로그래밍으로 Combine을 채택했었다. 우선, RxSwift가 아닌 Combine을 채택한 이유는 SwiftUI와 Combine이 굉장히 궁합이 좋다고 알고 있었기 때문이다. 또한 Combine은 Apple에서 2019년에 만든 새로운 프레임워크이며, RxSwift의 애플 버젼이기 때문에 미래에 많이 사용될 것 같아서가 주된 이유이다. 이러한 이유로 Combine을 사용했고, 이에 대해 내용을 정리해보고자 한다. Combine 주요 구성 요소 Publisher Subscriber 객체에 변경되는 값을 내보낼 타입을 선언하기 위한 프로토콜이다. Output, Failure 타입이 제네릭으로 구현되어있다. Subscriber Publisher..

iOS 개발/RxSwift

[RxSwift] - RxSwift의 개념

취업 준비를 하고 있는 요즘 자격요건에 RxSwift에 관련된 내용을 종종 발견할 수 있었다. 이전에 진행한 프로젝트에서는 RxSwift가 아닌 Combine을 활용해 작업을 진행했어서 RxSwift에 대한 내용을 정리해보고자 한다. RxSwift란? Swift에서는 비동기 프로그래밍을 할 때 RxSwift, Combine을 사용한다. 그 중 RxSwift는 Reactive eXtension + Swift로 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리이다. RxSwift를 사용하는 이유 Swift에 반응형 프로그래밍을 더해주어, 비동기 코드를 동기화 코드처럼 작성 가능 일관성이 없는 비동기 코드를 하나의 비동기 코드로 개발 가능 서로 다르게 구현한 로직을 조합..

iOS 개발/SwiftUI

[SwiftUI] - Firebase firestore 객체 데이터 삭제

swiftui 에서 firebase를 활용해 다음과 같이 사용자별로 이메일, 객체 배열을 저장했다. 이후, 구글을 통해 객체 배열을 삭제하는 함수를 작성했는데, 화면에서는 함수가 제대로 작동하는 것처럼 나왔지만, 실제 firebase에서는 데이터가 일부만 삭제되는 현상이 발생했다. 이러한 현상은 Date 타입을 사용하는 경우 발생한다고 한다. 현재 Package model 코드는 다음과 같다. struct Packages: Codable, Hashable { var timeStamp: Date var trackCompany: String var trackNumber: String var setTrackNumber: [String: Any] { return [ "timeStamp": self.timeSta..

iOS 개발/SwiftUI

[SwiftUI] - firebase 회원가입, 로그인 시 에러 처리 View에 적용하기

로그인, 회원가입 기능을 수정하는 작업을 진행하게 되었다. 해당 View를 구성하는 데 있어서 이메일 형식, 비밀번호 형식이 아니거나 비밀번호와 비밀번호 확인이 동일하지 않을 때 에러를 출력하는 것은 어렵지 않았다. 그러나 firebase와 연동해 해당 이메일이 이미 존재하거나, 이메일을 잘못 입력했을 때 이를 view에 보이게 하는 문제에 직면했다. 우선 이메일 형식, 비밀번호 형식을 구분하는 함수는 다음과 같다.(해당 함수는 다른 여러 곳에도 소개되어 있다) //이메일 형식 확인 함수 func checkEmail(str: String) -> Bool { let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" return NSPredic..

iOS 개발/SwiftUI

[SwiftUI] firebase firstore 데이터 CRUD

firebase의 firestore를 이용하여 사용자를 등록하고 사용자의 이메일과 택배 번호, 택배 회사에 관한 데이터를 입력시키는 작업을 진행했다. 해당 작업을 진행하면서 카카오, 애플, 이메일 회원가입을 각각 진행할 때 이메일이 같은 경우에 어떤 식으로 해당 이메일들을 구분해야 하는가에 대한 문제가 발생했다. 이 문제점은 아래 회원가입과 로그인 코드와 같이 Auth.auth().createUser(withEmail: email + "2", password: password)를 활용했다. 각각 로그인, 회원가입 시에 이메일 뒤에 구분할 수 있는 다른 문자열을 넣는 방식을 채택했다. 그리고 Create, update, delete는 firebase의 문서들을 참고하여 해결할 수 있었지만, read의 경우..

bamtorii
'iOS 개발' 카테고리의 글 목록 (4 Page)