Danny의 iOS 컨닝페이퍼
article thumbnail

시작

이전에 이미 plist의 데이터를 갖고 오는 방법을 설명을 했었습니다.

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

[iOS/Swift] plist의 값 얻는 방법 및 Github에서 중요한 정보 숨기는 방법(API Key, Bundle, gitignore)

 

그런데 불러오는 과정에서

NSDictionary(contentsOfFile: String)은 iOS 11 부터 더 이상 사용되지 않더라고요.

 

이런식으로 사용이 가능하네요.

var parsePlist: NSDictionary {
    
    guard let plistUrl = Bundle.main.url(forResource: "SecureAPIKeys", withExtension: "plist") else {
        fatalError("Couldn't find file 'SecureAPIKeys.plist'.")
    }
    
    guard let plistData = try? Data(contentsOf: plistUrl),
          let dict = try? PropertyListSerialization.propertyList(from: plistData, format: nil) as? NSDictionary else {
        fatalError("Couldn't load dictionary from data.")
    }
    
    return dict
}

let value = parsePlist["Key값"] as! String
// let value = parsePlist.object(forKey: "Authorization") as? String

 

익스텐션으로 만들어 보면 이와 같이 사용할 수 있습니다.

extension Bundle {

    static func parsePlist(ofName name: String) -> [String: AnyObject] {
        guard let plistUrl = Bundle.main.url(forResource: name, withExtension: "plist") else {
            fatalError("Couldn't find file '\(name).plist'.")
        }
        
        guard let plistData = try? Data(contentsOf: plistUrl),
              let dict = try? PropertyListSerialization.propertyList(from: plistData, format: nil) as? [String: AnyObject] else {
            fatalError("Couldn't load dictionary from data.")
        }
        
        return dict
    }
}

let dict = Bundle.parsePlist(ofName: "SecureAPIKeys")
let value = dict["Key값"] as! String

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

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