ios - 基于 textField 将新 key 写入 .plist 文件

标签 ios

我想要做的是从一个基于 .plist 的数组填充一个 pickerView,它可以从一个 textField 添加。我已经让它工作了,但它只添加一个键并在添加新键时替换它。例如,如果我添加“hello”,然后尝试添加另一个,它会将 hello 替换为其他内容。

- (IBAction)setContext:(id)sender {

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *path = [[NSBundle mainBundle] pathForResource:@"fullArray" ofType:@"plist"];
NSString *textFieldText = textField.text;

NSMutableDictionary *rootDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
[rootDict setValue:textField.text forKey:textField.text];

NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"fullArray.plist"];
[rootDict writeToFile:writablePath atomically: YES];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1

NSString *plistPath = [documentsDirectory     stringByAppendingPathComponent:@"fullArray.plist"]; //3

NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
NSArray *array = [dictionary allKeys];

arrayContext = [[NSMutableArray alloc] initWithArray:array];

[pickerView selectRow:0 inComponent:0 animated:YES];

[textField endEditing:YES];

[pickerView reloadAllComponents];

}

我该如何解决这个问题?

最佳答案

好的,每次你在选择器中选择一些东西时,你都在创建一个新的 NSMutableDictionary,正确的方法是:

  1. 创建一个 NSMutableDictionary 作为属性。
  2. 每次选择时,为键创建一个新字符串,可能使用 [NSString stringWithFormat:]。
  3. 使用 [mutableDictionary setObject:forKey] 在突变字典中设置一个新对象,使用新创建的键。

关于ios - 基于 textField 将新 key 写入 .plist 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725308/

相关文章:

ios - 尝试将日期转换为时间戳,但是当我将其转换回日期时,日期不一致

iphone - 使用pushViewController到TableViewController时出现断言错误

html - 如何在不选择 IOS 画廊的情况下强制从相机上传文件?

iphone - UITableViewCells 不会根据设备或方向变化调整大小

ios - 您能否使 Xcode 5.1 目标依赖项仅构建有效的体系结构?

ios - NSNotificationCenter - 具有不同名称的相同观察者

ios - 设备旋转后TableView内容发生变化

ios - Swift 3 扩展返回 "has no member"错误

ios - 为客户企业应用商店开发 iOS 应用

ios - 在 Navcontroller 中添加 Storyboard