2013-02-11 3 views
0

plist 파일에 추가하는 방법에 대한 많은 자습서를 보았지만 plist 파일에 중첩 된 태그를 올바르게 삽입 할 수 없습니다. 내의 Info.plist 파일어떻게 내 plist 파일에 다음 줄을 추가 할 수 있습니까?

<key>AppTag</key> <array> 
    <string>hidden</string> </array> 


NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:@"/Users/me/Desktop/Info2.plist"] mutableCopy]; 

    [plist setObject:@"AppTag" forKey:@"key"]; 
    [plist setObject:@"hidden" forKey:@"string"]; 

    [plist writeToFile:@"/Users/me/Desktop/Info2.plist" atomically:YES]; 
    [plist release]; 
+1

당신이 무엇을 추가하고 싶은지, 무엇을 얻고 있는지 불분명합니다. –

+1

뭐가 문제 야? –

+0

내 질문을 편집했습니다. 다시보십시오. – zzzzz

답변

2

당신은과 같이, 키 @"AppTag"의 객체로 문자열 배열을 설정해야합니다 : 당신은

-(NSString *) datafilepath{ 



NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documents=[path objectAtIndex:0]; 
return [documents stringByAppendingFormat:@"/Info2.plist"]; // you can change the path to desktop 
} 
의 viewDidLoad에서

또는 방법 코드를 다음 시도 할 수 있습니다

NSArray *strings = @[@"hidden"]; 
plist[@"AppTag"] = strings; 
1

에 다음 줄을 추가 할 당신이해야 할 것은 당신의 arraystrings을 추가 한 다음 array 파일의 dictionary받는 것입니다. 다음 예제에서는 WordList.plist라는 파일에 일부 단어와 그 정의를 추가 해요 :

NSArray *values = [[NSArray alloc] initWithObjects:word.name, word.definition, nil]; 
NSArray *keys = [[NSArray alloc] initWithObjects: NAME_KEY, DEFINITION_KEY, nil]; 
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys]; 
[wordsListArray addObject:dict]; 

NSString *destinationPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
NSUserDomainMask, YES) lastObject]; 
destinationPath = [destinationPath stringByAppendingPathComponent:@"WordList.plist"]; 
[wordsListArray writeToFile:destinationPath atomically:YES]; 

도움이 되었기를 바랍니다.

또한,이 잘 작동하지 않는 부분이라고 생각 : @"/Users/me/Desktop/Info2.plist"

이 NSLogging를 사용해보십시오.

+0

내 요구 사항이 보인다면. 문자열 태그는 배열 태그에 중첩되어 있어야합니다. 나는 이것을 어떻게 얻을 수 있는지 알고 싶습니까? 주어진 xml을 이미 존재하는 info.plist 파일에 추가하려고하지만 그 혼란은 매우 혼란 스럽습니다. 어떻게 달성 할 수 있습니까? – zzzzz

+1

당신이하고있는 일은 중첩 된 태그를하는 것이 옳지 만, 앱의'Documents' 폴더 바깥에 파일을 저장할 수 없기 때문에 데스크탑에 파일을 저장할 수 없습니다. 내 코드의 두 번째 부분을 사용하여 해당 폴더에 저장하십시오. – Neeku

+1

그것의 jailbroken 장치와 나는 원하는 어느 곳에서나 저장할 수 있습니다 :) – zzzzz

1

NSString *filepath3=[self datafilepath]; 
if ([[NSFileManager defaultManager]fileExistsAtPath:filepath3]) { 
    pricedict=[[NSMutableDictionary alloc]initWithContentsOfFile:filepath3]; 
} 

[pricedict setObject:@"AppTag" forKey:@"key"]; 
[pricedict setObject:@"hidden" forKey:@"string"]; 

[pricedict writeToFile:pngfilepath atomically:YES]; 

희망이 있습니다. 해피 코딩 