基于textField将新密钥写入.plist文件

时间:2012-03-15 17:49:30

标签: ios

我想要做的是根据.plist从数组填充pickerView,可以从textField添加.plist。我已经让它工作了,但它只添加了一个键,并在添加新键时替换它。例如,如果我添加“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];

}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

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