2010-04-20 3 views
0

У меня есть plist, у которого в корне есть массив с диктаторами внутри него.Плиссированная матрица, не может сменить подкасты внутри

Я загружаю plist из своих ресурсов в качестве NSMutableArray.

[NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Filters" ofType:@"plist"]] 

Я хранил его в nsuserdefault, потому что он должен быть стойким между стартапами.

[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"filters"]; 

, но я не могу изменить диктаторы в массиве, потому что они не изменяемы. как я могу сделать их изменчивыми?

ответ

1

Вы можете заменить словарь измененной копией самой себя, используя метод mutableCopy NSDictionary.

[EDIT] Пример:

[ array replaceObjectAtIndex: 42 withObject: [ [ [ array objectAtIndex: 42 ] mutableCopy ] autorelease ] ];

+0

UHU, это Возможное к нему непосредственно на массив без создания копии из него? –

5

Заканчивать с помощью «mutabilityOption: NSPropertyListMutableContainersAndLeaves», это дает очень точный контроль над которой элементы добавляются как статические и какие элементы будут добавлены как изменяемые. Из руководства список недвижимости:

программистов

If you need finer-grained control over the mutability of the objects in a property list, use the propertyListFromData:mutabilityOption:format:errorDescription: class method, whose second parameter permits you to specify the mutability of objects at various levels of the aggregate property list. You could specify that all objects are immutable (NSPropertyListImmutable), that only the container (array and dictionary) objects are mutable (NSPropertyListMutableContainers), or that all objects are mutable (NSPropertyListMutableContainersAndLeaves).

For example, you could write code like this:

NSMutableArray *dma = (NSMutableArray *)[NSPropertyListSerialization 
         propertyListFromData:plistData 
         mutabilityOption:NSPropertyListMutableContainersAndLeaves 
         format:&format 
         errorDescription:&error]; 

This call produces a mutable array (dma) with mutable dictionaries in each element. Each key and each value in each dictionary are themselves also mutable.

+0

Извините, только что отметили, что это будет обесцениваться, новый вызов: '+ (id) propertyListWithData: (NSData *) параметры данных: (NSPropertyListReadOptions) формат выбора: (NSPropertyListFormat *) ошибка формата: (NSError **) ошибка ' –

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

  • Нет связанных вопросов^_^