2010-03-12 5 views
1

writeToFile을 수행 : 원자 적으로 기존 .plist에 데이터를 추가 하시겠습니까? .plist에서 값을 수정할 수 있습니까? 변경 사항을 적용하려면 앱을 다시 컴파일해야합니까?objective-c .plist 파일에 추가/편집

내 응용 프로그램에 사용자 지정 .plist 목록이 있습니다. 구조는 다음과 같습니다.

<array> 
<dict> 
    <key>Title</key> 
    <string>MyTitle</string> 
    <key>Measurement</key> 
    <dict> 
     <key>prop1</key> 
     <real>28.86392</real> 
     <key>prop2</key> 
     <real>75.12451</real> 
    </dict> 
    <key>Distance</key> 
    <dict> 
     <key>prop3</key> 
     <real>37.49229</real> 
     <key>prop4</key> 
     <real>58.64502</real> 
    </dict> 
</dict> 
</array> 

배열 태그에는 동일한 구조의 여러 항목이 있습니다. 기존의 .plist에 항목을 추가해야합니다. 그게 가능하니? 나는 그렇게하기 위해 UIView를 작성할 수있다.

* EDIT - 좋아요, writetofile을 추가하려고 시도해 보았습니다. 추가하지 않으면 최소한 덮어 쓰게됩니다. 이상하게도 다음 코드는 읽고 쓰는 동안 다른 경로를 선택합니다.

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

.plist 파일이 내 프로젝트에 있습니다. 나는 그것을 읽을 수있다. 내가 쓸 때 .plist 파일을 만들고 내 /users/.../library/에 저장하고 있습니다! 누구에게도 이것이 의미가 있습니까?

답변

1

응용 프로그램과 함께 제공되는 plistread only으로 가정합니다. 응용 프로그램 번들 내에 있습니다.

모든 업데이트는 사용자 별 디렉토리에 저장되므로 모든 사용자가 고유 한 수정 사항을 갖습니다.

+1

맞습니다. 애플리케이션의 번들에있는 어떤 파일에도 쓰지 말아야한다. 관리자 권한이없는 사용자에게는 일반적으로 권한이 없습니다. 영구적 인 데이터를 저장해야한다면'~/Library/Application Support'에 저장하거나'NSUserDefaults'를 사용하십시오. –

+0

감사합니다. 말이된다. – Dave

1

물론 .plist 파일을 직접 작성하고 작성할 수 있습니다. NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"];으로 작성/편집 할 수 있습니다.

하지만 같은 질문이 있습니다. 전체 .plist 파일을 덮어 쓰는 대신 특정 키에 대해 값을 편집하려면 어떻게해야합니까?

예. <key>Title</key> <string>MyTitle</string>에서 "해바라기"로 키 "제목"의 값 "MyTitle"을 변경하려면 코드에서 어떻게 할 수 있습니까?