Things take time

[SWIFT] plist파일 읽기 및 UserDefaults 본문

iOS (기능)

[SWIFT] plist파일 읽기 및 UserDefaults

겸손할 겸 2017. 5. 23. 11:22

[Info.plist]


프로젝트 파일이나 워크스페이스(프로젝트보다 상위의 개념으로 여러 프로젝트 혹은 코코아팟으로 다운받은 라이브러리를 모두 포함한 개념)을 생성하면 같이 들어있는 파일 중에 plist파일이 존재한다. 이 파일의 용도는 무엇일까.


plist = property file로 필수적인 환경 설정 정보들을 포함하는 구조화된 텍스트 파일이며, xml구조로 된 utf-8로 인코딩된 파일이다. 또한 key, value값으로 이루어져 있으며 Info.plist란 이름으로 생성되고, I로 시작하는 이름은 필수적이다. 


물론 이 Info.plist파일처럼 자동 생성된 파일말고 사용자가 직접 지정하여 생성할 수 있는데 이 방식은 <project name>-Info.plist로 생성하면 된다.

        let infoDic = Bundle.main.infoDictionary!
        
        let appName = infoDic["CFBundleName"] as! String
        let SCOMIDX = infoDic["SCOMIDX"] as! Int
        
        print("appname : \(appName)")
        print("SCOMIDX : \(SCOMIDX)")

CF?

Core Foundation의 약자로 OS의 커널, 써드파티의 라이브러리 사용 등을 위해 필요한 API의 집합이 CF이며 이 데이터 타입은 CFArray라고 한다. 그러므로 번들 이름이나 기타 정보들은 Core Foundation을 통해 얻어낼 수 있다는 것을 의미한다. Object-C 오픈 소스이며.. Object-C를 갖고 있지 않는 플랫폼이나 필요할때만 사용하라고 한다. 


[UserDefaults]


안드로이드의 SharedPreference의 역할로 어플이 삭제되기 전까지 유지할 수 있는 데이터, SQLite가 무겁다면, 이 것으로 사용하는 것도 좋다. 물론 복잡하며 구조화된 데이터라면 이 것으로는 부족하다.


저장할 때

        let SCOMIDX = infoDic["SCOMIDX"] as! Int
        UserDefaults.standard.set(SCOMIDX, forKey: "SCOM")

불러 올 때

        let scom = UserDefaults.standard.integer(forKey: "SCOM")
        print("\(scom)")