Добавьте sub Key для plist программно - PullRequest
1 голос
/ 08 февраля 2010

Может ли кто-нибудь помочь мне добавить детей в список?

Я думаю, что хочу записать индекс строк из plist, а затем указать, в какую индексную строку записать ключ. Я не уверен, как сказать, будет ли ключ строкой, словарем или массивом.

Ниже приведен код из другого вопроса о добавлении ключа в root.

 NSString *path = @"path/to/some/file";
 NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:path] mutableCopy];
 [plist setObject:@"foo" forKey:@"aKey"];
 [plist writeToFile:path atomically:YES];
 [plist release];

Любая помощь будет чрезвычайно ценится:)

Ответы [ 3 ]

2 голосов
/ 08 февраля 2010

Примечание: мне все еще нужна помощь, но я добился прогресса.

Следующий код добавит имя записи массива plist "Hi" с дочерними элементами: Элемент 0, тест1 Элемент 1, test2

NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:databasePath] mutableCopy];
NSMutableArray *newArray = [[[NSMutableArray alloc] init] autorelease];
newArray = [NSArray arrayWithObjects:@"test1", @"test2", nil];
[plist setObject:newArray forKey:@"Hi"];
[plist writeToFile:databasePath atomically:YES];
[plist release];

Я думаю, создание элемента словаря будет работать так же, как элемент массива. Я до сих пор не знаю, как добавить в детей, хотя: /

1 голос
/ 03 ноября 2010

Я считаю, что имя строки ключей не может измениться, только способ дать ключи, и объект будет использовать NSDictionary

[NSArray arrayWithObjects:dictionary1, dictionary2];

надеюсь, это поможет

1 голос
/ 09 февраля 2010

Вот оно Если вы делаете все следующим образом, вы можете написать список. Словарь -> массив -> строка Словарь -> Словарь -> Словарь -> Массив -> строка и т.д ...

Вот код, который создает словарь «Row», содержащий массив «Hi», содержащий 2 строки с именами Item 0 и Item 1 с именами «test 1 и test 2.

NSMutableDictionary *plist = [[NSDictionary dictionaryWithContentsOfFile:databasePath] mutableCopy];
NSMutableArray *newArray = [[[NSMutableArray alloc] init] autorelease];
NSMutableDictionary *newDictionary = [[[NSMutableDictionary alloc] init] autorelease];
newArray = [NSArray arrayWithObjects:@"test1", @"test2", nil];
newDictionary = [NSDictionary dictionaryWithObject:newArray forKey:@"Hi"];
[plist setObject:newDictionary forKey:@"Row"];
[plist writeToFile:databasePath atomically:YES];
[plist release];

Это будет сбой, если вы попытаетесь написать элемент, где 1 уже существует. Кто-нибудь знает, как я могу дать строковым ключам (т. Е. Пункту 0, пункту 1 и т. Д.) Имя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...