基于textField将新密钥写入.plist文件
问题描述:
我想要做的是从基于.plist的数组中填充pickerView,该.plist可以从textField中添加。我有它的工作,但它只添加一个键,并在添加新键时替换它。例如,如果我添加“hello”,然后尝试添加另一个,它会用别的替换hello。基于textField将新密钥写入.plist文件
- (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,正确的做法是:
- 创建的NSMutableDictionary作为属性。
- 每次你选择时,都可以使用[NSString stringWithFormat:]为该键创建一个新的字符串。
- 使用[mutableDictionary setObject:forKey]在突变字典中使用新创建的密钥设置新对象。
这里我回答一个类似的问题,用代码http://stackoverflow.com/questions/9673140/create-plist-file-via-code/9673615#9673615 – LuisEspinoza 2012-03-15 19:06:28
和,你有veredict? – LuisEspinoza 2012-03-15 21:35:00
不,我想要做的是在顶部有一个textField,并带有一个按钮将textField.text添加到数组中并将其写入.plist。 – user1222053 2012-03-16 16:13:40