2013-02-11 4 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", например, так:

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

Что вам нужно сделать, это добавить к вашим stringsarray, а затем 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

его джейлбрейк устройство, и я могу сэкономить везде, где хочу :) – zzzzz

1

Вы можете попробовать следующий код

-(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 или любой метод

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]; 

Надеюсь, это поможет .. Счастливое кодирование 

Смежные вопросы