ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [맥주] 맥주 추천 어플 만들기(0) - 준비
    iOS 2021. 12. 23. 20:22

    Device : 2021 M1 Macbook pro
    OS : macOS Monterey 12.1
    Xcode : Version 13.1 (13A1030d)

    이번에는 맥주 API를 이용해서 맥주 추천 어플을 만들어보려고 합니다.

    결과물 예시는 아래와 같습니다.

    준비물

    Pods

    • SwiftLint - 코드 규칙을 검사해주는 라이브러리. 이번 프로젝트는 Code convention을 지켜가며 코드를 작성해보기 위해서
    • Alamofire - 맥주 API 서버와 통신을 위한 라이브러리
    • SnapKit - 모든 UI를 Code로만 구현할 예정인데, 이때 constraint를 쉽게 작성하기 위한 라이브러리

    맥주 API 사이트

    Punk API

    프로젝트 설정

    Without Storyboard

    처음이신 분은  Storyboard없이 code로 UI구현하기 를 참고해주세요!

    Pods

    M1에서 사용하는 Cocoapod이기 때문에 조심스럽게 다뤄주어야 합니다.

    일단 프로젝트를 하나 만듭니다.

    Terminal을 Rosetta를 사용하여 실행해줍니다.

    유틸리티 폴더에서 터미널을 찾아 Rosetta로 실행

    이렇게 Rosetta를 사용해서 실행한 터미널에서 Pods Dependencies를 추가해주면 오류 없이 추가할 수 있습니다.

    SwiftLint

    스크립트 추가

    SwiftLint를 사용하기 위한 Script를 Build Phase에 추가

    최상단 프로젝트 선택 -> Target 선택 -> Build Phases 탭 -> + 버튼을 눌러 New Run Script Phase 추가

    -> 스크립트에 ${PODS_ROOT}/SwiftLint/swiftlint를 추가.

    이렇게 하면 기본적으로 SwiftLint를 사용할 수 있습니다.

    SwiftLint는 기본적으로 프로젝트 내의 모든 파일이 검사대상이므로, Pods들도 예외 없이 검사합니다..

    Error 테러

    설정

    SwiftLint는 예외사항이나, 규칙들을 Configurate할 수 있게 지원해줍니다.

    자세한 사항은 SwiftLint 규칙들에서 확인할 수 있습니다.

    저는 기본적으로 Pods와 프로젝트 기본 파일들을 예외사항으로 지정해주려고 합니다.

    일단 빈 파일을 .swiftlint.yml 의 이름으로 만들어줍니다. 무조건 저 이름 그대로 만들어야 SwiftLint가 실행할 때 검사할 수 있습니다.

    disabled_rules: // SwiftLint의 기본적인 Rule중에 제외하고 싶은 항목을 기입하면 됩니다.
    included:       // 포함하고 싶은 파일의 Path를 입력하면 됩니다. 기본 Path: 프로젝트 최상단 디렉토리
    excluded:       // 제외하고 싶은 파일의 Path를 입력하면 됩니다. included보다 먼저 실행됩니다.
    - Pods
    - RecommendTheBeer/Project

    저는 이렇게 추가해주었습니다.

    /Pods, /RecommendTheBeer/Project에 있는 모든 파일을 검사 대상에서 제외한다는 뜻입니다.

    이렇게 설정해 주고, 아까 말했던 프로젝트의 기본 파일들을 Project폴더에 넣어주면 됩니다.

    Project 폴더 내에 모여있는 파일들

    이렇게 Project폴더로 파일들을 옮기면 실행 시 오류가 발생할 것입니다.

    이유는 Info.plist를 찾을 수 없기 때문인데, 아래와 같이 변경해 주면 프로젝트가 Info.plist를 제대로 찾을 수 있게 됩니다.

    Build Settings내의 Info.plist파일 위치 설정

    이렇게 해서 기본적인 세팅은 모두 끝났습니다.

    댓글

Designed by Tistory.