2015-07-13 3 views
0

Я пишу plist из «NSMutableDictionary». Это работает нормально.iOS - Добавление элементов в plist

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

То, что я хотел бы что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?> 
<names> 
<name1> 
    <key> 
     firstname 
    </key> 
    <value> 
     mememememe 
    </value> 
    <key> 
     lastname 
    </key> 
    <value> 
     mememememe 
    </value> 

</name1> 
<name2> 
    <key> 
     firstname 
    </key> 
    <value> 
     mememememe 
    </value> 
    <key> 
     lastname 
    </key> 
    <value> 
     mememememe 
    </value> 

    </name2> 
</names> 
Here's my code so far: 



    NSString *filename = [documents stringByAppendingPathComponent:@"faves.plist"]; 
    NSMutableDictionary *loadedMiscDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filename]; 

NSArray *directories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documents = [directories firstObject]; 

    NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; 
    [tempDict setValue:firstNameString forKey:@"firstname"]; 
    [tempDict setValue:secondNameString forKey:@"secondName"]; 

    [loadedMiscDictionary addEntriesFromDictionary:tempDict]; 
    [loadedMiscDictionary writeToFile:filename atomically:YES]; 

Пожалуйста, дайте мне знать, что я делаю неправильно. ТИА

UPDATE

Я изменил свой фрагмент кода выше ..

+0

вы использовали мой ответ –

+0

Нет , ответ еще не завершен. –

+0

означает, что вы хотите сказать, что я не получаю вашу проблему. нужен ли какой-то код для этого или что-то еще –

ответ

0

вы должны использовать правую кнопку мыши + Добавить строку для верхней категории и подкатегории использовать знак +, чтобы добавить новую в Plist файл

+0

Спасибо, что ответили, но мне нужно, чтобы это было динамическим plist. –

+0

Если я правильно понял, если ваши ключи одинаковы, то это будет переопределяться. Для каждого объекта необходимо иметь разные ключи. –

+0

Чтобы улучшить свой код больше. 1. В первый раз, поскольку может существовать возможность отсутствия файла данных/plist, проверьте его, проверив количество словарей ([loadedMiscDictionary count] == ​​0), если true, затем добавьте данные словаря приложения непосредственно в файл. 2.if false, тогда используйте [loadedMiscDictionary addEntriesFromDictionary: tempDict]; добавить новые записи и [loadedMiscDictionary setDictionary: tempDict]; для обновления старого один раз. –

1

Ваш код перекрывает старые записи о PLIST. Вы не получаете записей в файле plist в словаре. Просто создайте новый словарь, добавьте новые записи и переопределите старый файл.

  • выборки Plist данные файла
  • , хранящиеся в его NSMutableDictionary или NSMutableArray
  • Добавление новых записей в этом Словаре. или массив
  • В последнем случае получите текущее местоположение файла и сохраните вновь созданный dict. или массив, в котором хранятся старые и новые записи.

Я надеюсь, что это будет поможет вам

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