프로퍼티 리스트

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
프로퍼티 리스트
Property List
확장자 .plist
개발 애플 컴퓨터, GNUstep,
NeXT
파일 포맷 종류 연관 배열 객체 직렬화

프로퍼티 리스트 (property list) 는 Mac OS X, iOS, NeXTSTEP, GNUstep 프로그래밍 소프트웨어 프레임워크 등에 이용되는 객체 직렬화 를위한 파일 이다. 또한 . plist 라는 확장자 를 가지므로, 보통 plist 파일이라고 하는 경우가 많다. 프로퍼티 리스트 파일은 보통 사용자의 설정을 저장하는데 쓰인다. 또한, 번들애플리케이션 소프트웨어 정보를 저장하기 위해서도 사용되고, 이전 맥 OS 에서는 리소스 포크 정보를 저장하는데에 사용되었다.

표현 방법[편집]

프로퍼티 리스트의 데이터 표현은 추상적이기 때문에 다양한 방법으로 기본 파일 형식을 구현할 수 있다. 이전의 NeXTSTEP 에서는 한 가지 형식을 사용했는데, GNUstepMac OS X 프레임워크에서 다양한 형식을 도입했다.

NeXTSTEP[편집]

NeXTSTEP 에서 프로퍼티 리스트는 손으로 수정하기 쉽도록, 인간 가독성 방식으로 디자인되었고, 프로그래밍 언어 문법에 가깝게 ASCII 로 직렬화 되어있다.

문자열은 다음과 같이 표현한다:

"plist 문자열"

바이너리 데이터는 다음과 같이 표현한다"

< [ASCII HEX 코드] >

배열(Array)는 다음과 같이 표현한다:

( "1", "2", "3" )

딕셔너리(Dictionary) 배열은 다음과 같이 표현한다:

{
    "key" = "value";
    ...
}

NeXT 의 프로퍼티 리스트는 NSValue(숫자, 불린 자료형 등) 객체 표현에 제한이 있다.

GNUstep[편집]

GNUstepNeXTSTEP 에서 몇 가지를 형식을 추가했다.

GNUstep 의 프로퍼티 리스트는 Mac OS X 를 이용하여 읽거나 작성할 수 있다.

Mac OS X[편집]

OS XNeXTSTEP 형식도 다룰 수 있지만, 애플은 별도로 새로운 두 가지 형식을 추가했다.

맥 OS X 10.0 에서는 NeXTSTEP 형식을 사용하지 않고, 애플이 정의한 DTD 의 새로운 XML 문서 형식이 발표되었다. 이 형식은 non-ASCII 문자와, NSValue 객체(일부는 일반 텍스트로 나타남.)를 저장할 수 있다.(다른 GNUstepASCII 프로퍼티 리스트 형식과 달리, 애플의 ASCII 프로퍼티 리스트 형식은 지원하지 않는다.)

그러나 그 동안의 XML파일은 공간 활용에 문제가 많았기 때문에 맥 OS X 10.2 에서는 이진 파일 등을 저장할 수 있는 새로운 프로퍼티 리스트 를 발표하였다. Mac OS X 10.4 부터는 이 형식이 기본으로 사용되었다.

프로퍼티 리스트는 plutil 유틸리티 (맥 OS X 10.2부터 추가된 기능)를 사용하여 구문 확인, 형식 변환에 사용할 수 있다. 또한, NeXTSTEP 의 기본 유틸리티도, 자체 환경설정커맨드 라인에서, 환경설정값의 저장에(이전의 Mac OS X 에서도 가능) 사용되는 프로퍼티 리스트 파일을 편집하는데 사용할 수 있다. XML 프로퍼티 리스트는 어떤 편집기에서도 편집하기 쉬우나, 애플의 계층 문서 뷰어/편집기 또한, 바이너리 형식의 프로퍼티 리스트를 편집할 수 있다. 애플은 개발 도구의 일부로 응용 프로그램인 프로퍼티 리스트 에디터를 제공한다.

Mac OS X 10.4부터는 시스템 이벤트 응용 프로그램을 통해 프로퍼티 리스트 파일을 읽기 위한 AppleScript 인터페이스를 제공한다. Mac OS X 10.5에서는 프로퍼티 리스트의 생성, 작성, 편집을위한 AppleScript 인터페이스를 제공한다.

XML 프로퍼티 리스트에 사용되는 Foundation 클래스와, CoreFoundation 형식, XML 태그 및 데이터 저장 형식이다:

Foundation 클래스 CoreFoundation 형식 XML 태그 형식
NSString CFString <string> UTF-8 인코딩 문자열
NSNumber CFNumber <real>, <integer> 10 진수 문자열
NSNumber CFBoolean <true />, or <false /> 두 종류의 태그
NSDate CFDate <date> ISO 8601 형식 문자열
NSData CFData <data> Base64 인코딩 데이터
NSArray CFArray <array> child element 번호
NSDictionary CFDictionary <dict> <key> 태그와 plist element 관련 태그

예제[편집]

냉장고 안에 코끼리 넣기 (Mac OS X 10.6 작성)[편집]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>냉장고</key>
	<array>
		<string>코끼리</string>
	</array>
</dict>
</plist>

dictionary안에 '냉장고' key를 가지고 있는 element의 0번 인덱스 에 '코끼리' 문자열 element를 가지고 있는 array의 표현방법이다. 000

바깥 고리[편집]