2012-01-22 1 views
0

Я прочитал plist в памяти и вам нужно изменить одно из значений, если пользователь нажимает на строку.Как обновить массив, созданный с помощью plist-error ReadOnly

Я прочитал plist в памяти, а затем покажу его на столе.

Это прочитанной в память:

self.questions = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"q1" ofType:@"plist"]]; 

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

[[[self.questions valueForKey:title] objectAtIndex:indexPath.row] valueForKey:@"Checked"] = @"1"; 

При запуске этого я получаю сообщение об ошибке говорящее значение только для чтения. Короче говоря, для создания другого массива для обработки отмеченного и включенного, есть ли способ сделать это?

спасибо!

+0

Возможный дубликат вопрос: HTTP: //stackoverflow.com/ Вопросы/8884215/appending-data-to-plist-iphone/8884515 # 8884515 –

ответ

0

Используйте +[NSPropertyListSerialization propertyListWithData:options:format:error:], чтобы декодировать содержимое файла и передать либо опцию NSPropertyListMutableContainers, либо опцию NSPropertyListMutableContainersAndLeaves.

+0

Я пытаюсь изменить значение в массиве, который уже существует. См. Вторую строку примера моего вопроса ... Как мне сделать это с вашим предложением? –

+0

Используйте метод 'setValue: forKey:'. –

+0

Извините, что я очень плотный ... где я могу установить значение set: [[[self.questions valueForKey: title] objectAtIndex: indexPath.row] valueForKey: @ «Checked»]; –

1

просто использовать NSMutableDictionary класс для self.questions:

в * .h

NSMutableDictionary *questions; 

в * .m

self.questions = [NSMutableDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"q1" ofType:@"plist"]]; 
+0

Как присвоить значение одному из полей в словаре? –

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