Danny의 iOS 컨닝페이퍼
article thumbnail

extension으로 plist 불러오는 방법

이전글

[iOS/Swift] 개발 환경에 따라 각각의 다른 plist의 저장된 API Key 값 받아오기 에서도

자세히 다루기는 했지만

이번에는 간단하게 plist 값을 얻는 방법gitignore까지 다뤄보겠습니다.

 

 

준비 작업

먼저 plist 파일을 추가해 주세요.

 

기본 plist 파일은 Dictionary 형식으로 되어있습니다.

배열도 가능

 

plist파일을 생성 후

원하는 이름으로 Key 값을 만들어주고

Value 값으로 사용할 API Key 값을 넣어 만들어 줍니다.

 

일단 이렇게 하면 준비 작업은 끝났습니다.

 

 

코드

하드코딩을 할 것이기 때문에

 

⭐️ 위에서 작업한 plist파일 이름과 키 값을 정확하게 입력해 주셔야 합니다. ⭐️

extension Bundle {
    
    var apiKey: String {
        // forResource에다 plist 파일 이름을 입력해주세요.
        guard let filePath = Bundle.main.path(forResource: "SecureAPIKeys", ofType: "plist"),
              let plistDict = NSDictionary(contentsOfFile: filePath) else {
            fatalError("Couldn't find file 'SecureAPIKeys.plist'.")
        }
        
        // plist 안쪽에 사용할 Key값을 입력해주세요.
        guard let value = plistDict.object(forKey: "API_KEY") as? String else {
            fatalError("Couldn't find key 'API_Key' in 'SecureAPIKeys.plist'.")
        }
        
        // 또는 키 값을 통해 직접적으로 불러줄 수도 있어요.
        // guard let value = plistDict["API_KEY"] as? String else {
        //     fatalError("Couldn't find key 'API_Key' in 'SecureAPIKeys.plist'.")
        // }
        
        return value
    }
}

 

왜 Bundle 익스텐션으로 생성하는가?

 

NSBundle이란

Bundle에 포함된 코드와 리소스에 대한 표현

NSBundleObjectiveC를 통해 만들어진 Foundation Class이며

Bundle 디렉터리 안에 포함된 리소스에 쉽게 접근할 수 있도록 제공되는 객체입니다.

 

 

Bundle.main이란

 앱 실행 시 기본적으로 main bundle이 생성이 됩니다.

main bundle == Bundle.main 

 

main bundle은 현재 앱이 실행중일 때

앱의 Bundle Directory에 대한 리소스에 접근할 수 있게 도와주는 놈이죠.

 

현재 plist는 메모리에 올라간 상태입니다.

그러므로 path로 접근하면 plist의 파일의 리소스(값)를 사용할 수 있는거죠.

 

즉, Bundleplist에 접근이 가능하므로

Bundle 익스텐션을 사용!

 

미치도록 자세한 내용을 알고 싶다면 공식문서 를 참고하세요.

이건 외계어인가?

 

 

사용 방법

이제 만들어준 코드로 plist의 값을 불러와야겠죠?

 

간단합니다.

 

main Bundle에 접근해서

만들어준 속성만 입력하면 불러올 수 있습니다.

let appKey = Bundle.main.apiKey

// API값 12345

 

 

gitignore로 plist를 숨기기

여러 방법이 존재하는데 원하는 방식으로 사용하길 바랍니다.

 

방법  (터미널 이용 방법)

터미널에서 cd 로 적용할 폴더로 접근한 뒤

touch .gitignore를 통해 gitignore를 생성해 줍니다.

 

폴더로 들어가 보면 gitignore가 생성된 걸 확인할 수 있습니다

파일이 보이지 않는다면 comman + shifh + . 을 통하여 숨김을 해제해야 돼요.

 

gitignore 파일로 들어가서 숨기고 싶은

확장자명을 포함한 파일명을 적어주세요.

 

적용이 됐나 확인해 볼까요?

파일을 추가해도 Git에서 SecureAPIKeys.plist가 보이지 않습니다. 

적용이 잘된 거 같군요.

 

 

방법 (Xcode 내부 Git 설정 방법)

이 방법은 gitignore_global을 생성시켜 줘서

전역적으로 적용되게 하는 방법입니다.

 

다른 프로젝트를 생성해도 자동으로 gitignore가 적용이 됩니다!

 

Setteing -> Source Control -> Git -> ignored 추가

 

저장위치는 확실치 않는데

제 기준으로 사용자 폴더에서 생성이 되더라고요.

 

이 파일이 생겼으면 성공!

 

마지막으로 gitignore_global 적용시키기 위해서 필요한 코드가 있습니다.

 

한 번만 적용해 주면 다음 프로젝트부터는 자동적으로 gitignore가 됩니다!

git config --global core.excludesfile ~/.gitignore_global

 

 

방법 (Xcode로 . gitignore 파일 생성 방법)

최근에 알게 된 방법인데

Xcode에서 gitignore 파일을 생성해 준 뒤 작성하는 방법이다.

 

command + n을 통해 empty 파일 생성

 

파일명을 .gitignore로 설정 및 숨겨짐(Use 버튼) 클릭

 

위랑 같은 방식으로 gitignore 작성하기

 

⭐️ 꼭 먼저 gitignore의 목록 작성 후 파일을 생성시켜 주세요. ⭐️

파일생성 후에는 적용이 안되더라고요.

터미널에서 워킹 디렉터리로 다시 초기화시키면 되긴 하는데 번거롭습니다.

 

 

부족한 설명이지만, 조금은 이해 가셨나요?

틀린 내용이 있다면 언제든지 지적해 주시면 감사히 받겠습니다. 🫠
읽어주셔서 감사합니다 😃

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!