gpt4 book ai didi

ios - 是否可以创建从plist读取的对象的可变版本

转载 作者:行者123 更新时间:2023-12-01 20:00:57 25 4
gpt4 key购买 nike

我在应用程序中读取了一个plist,它在顶层是一个数组。它很简单,可以确保数组以可变方式开始

self.plistData = [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"myDataSource" ofType:@"plist"]] mutableCopy];

数组的每个元素内都有另一个数组,每个数组都包含一个字典。

基于表单元格的选择,我将在所选索引处更改字典的属性:
[self.cellDescriptors[indexPath.section][indexOfTappedRow] setValue:@"YES" forKey: @"isSelected"];

尝试更改字典值时出现错误 '-[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object'。如果plist读取的NSDictionary是不可变的,则该错误是有意义的。

有什么方法可以从plist读取内容,并确保将任何数组或字典作为可变版本读取?

最佳答案

最简单的方法是使用NSPropertyListSerialization并传递适当的选项以获取可变容器。

NSString *path = [[NSBundle mainBundle] pathForResource:@"myDataSource" ofType:@"plist"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSMutableArray *array = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListMutableContainers format:nil error:nil];
self.plistData = array;

理想情况下,您将使用 error参数并进行适当的错误检查,但这将使您入门。

这段代码将加载plist并返回一个可变数组,每个包含的数组和字典也将是可变的。

关于ios - 是否可以创建从plist读取的对象的可变版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39919415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com