프로퍼티 리스트 [Property List]
프로퍼티 리스트는
애플의 주요 소프트웨어 프레임워크에 이용되는
객체 직렬화를 위한 XML 형식의 파일이다.
객체 직렬화
객체의 내용을 바이트 단위로 변환하여 파일에 기록하거나
네트워크를 통해 전달이 가능하도록 하는 것
대부분 .plist
라는 확장자를 가지기 때문에
plist 파일이라고 부르기도 한다.
애플에서는 프로퍼티 리스트를
간단한 데이터 계층을 표현하기 위한 추상화 라고 정의하고 있다.
프로퍼티 리스트는
대부분 앱의 공통 데이터나 주요 설정 정보를 저장하는 목적으로 쓰인다.
ex.
1. 마지막에 열었던 문서나 파일에 대한 정보 기록
2. 가장 많이 실행한 메뉴 정보 기록
3. 시스템에서 번틀이나 애플리케이션 소프트웨어 정보 저장
iOS 기반의 프로젝트에서는
항상 Info.plist
파일을 찾아볼 수 있다.
이는 앱의 빌드와 실행에 필요한 환경 설정값을 저장하는
대표적인 시스템 프로퍼티 리스트 파일이다.
프로퍼티 리스트의 특징
프로퍼티 리스트는
데이터의 타입을 추상화하여 저장한다.
여기서 추상화란,
일체의 개별적인 특성을 배제하고 공통성을 띄는 것을 말한다.
개별적인 특성이 없기 때문에
여러 객체로 분화할 수 있는 가능성을 가진다.
각 타입의 문자열 데이터가 프로퍼티 리스트에 저장될 때는
모두 <string>
이라는 공통의 타입으로 추상화된다.
프로퍼티 리스트에 저장된 데이터는
연관된 어느 타입으로든 읽을 수 있다.
문자열의 경우,
모두 <string>
이라는 공통의 타입으로 추상화 되었기 때문에
어느 타입으로든 구체화 가능하다.
ex. String
, NSString
, CFString
스위프트에서 아키텍쳐에서 제공하는 기본 데이터 타입들은
모두 추상화된 형태로 프로퍼티 리스트에 저장 가능하다.
데이터 타입 [ Data Type ]
프로퍼티 리스트에 저장할 수 있는 데이터 타입은 크게 두 가지이다.
원시 타입 [ Primitive Data Type ]
Swift 에서 제공하는
String
, Int
, Float
, Double
, Bool
등이 이에 해당된다.
이 타입으로 선언된 데이터들은 모두 프로퍼티 리스트에 저장할 수 있다.
레퍼런스 타입 [ Reference Type ]
Foundation 프레임워크에서 제공하는
NSString
, NSNumber
, NSDate
, NSData
등이 이에 해당된다.
프로퍼티 리스트에는
컨테이너 형태의 집합 자료형도 저장할 수 있다.
여러 개의 연관된 데이터를 하나의 키 아래에 모두 저장할 수 있다.
Swift 에서 제공하는 Array
, Dictionary
,
Foundation 프레임워크에서 제공하는 NSArray
, NSDictionary
,
Core Foundation 프레임워크에서 제공하는 CFArray
, CFDictionary
등이
프로퍼티 리스트에 저장할 수 있는 대표적인 집합 자료형이다.
프로퍼티 리스트는 XML 형식을 따르는 포맷이므로,
데이터를 정의할 때는 데이터를 둘러싼 <>
엘리먼트에
각각 데이터 타입을 표시하는 XML 문법을 그대로 적용해 주어야 한다.
Type | XML 엘리먼트 | Swift | Foundation | Core Foundation |
---|---|---|---|---|
배열 | <array> | Array | NSArray | CFArray |
딕셔너리 | <dict> | Dictionary | NSDictionary | CFDictionary |
문자열 | <string> | String | NSString | CFString |
날짜 | <date> | - | NSDate | CFDate |
Base64 | <data> | - | NSData | CFData |
정수 | <string> | Int, UInt | NSNumber | CFNumber |
실수 | <real> | Float, Double | NSNumber | CFNumber |
논리형 | <true/>, <false/> | Bool | NSNumber | CFNumber |
📚 Reference
꼼꼼한 재은 씨의 Swift:실전편