使用“mutableoption:nspropertylistmutablecontainersandleaves”检查,可以非常精确地控制哪些元素是作为静态元素添加的,哪些元素是作为可变元素添加的。从属性列表程序指南:
如果需要对属性列表中对象的可变性进行更精细的控制,请使用propertylistfromdata:mutableoption:format:errordescription:class方法,该方法的第二个参数允许您指定聚合属性列表各个级别上对象的可变性。可以指定所有对象都是不可变的(Nspropertylistimmutable),只有容器(数组和字典)对象是可变的(NspropertylistmableContainers),或者所有对象都是可变的(NspropertylistmableContainers和Leaves)。
例如,您可以这样编写代码:
NSMutableArray *dma = (NSMutableArray *)[NSPropertyListSerialization
propertyListFromData:plistData
mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&error];
此调用生成一个可变数组(dma),每个元素中都有可变字典。每个字典中的每个键和每个值本身也是可变的。