Ios 将新输入追加到文档文件夹中的plist
经过大量的搜索,所以我已经能够拿出代码来纠正以前的失败。我试图完成的是从UITextField接受用户输入,并将该输入添加到我的TableView中,该TableView由plist填充。我的plist的根值是dictionary,我想保留它。我的问题是,当调用Ios 将新输入追加到文档文件夹中的plist,ios,objective-c,Ios,Objective C,经过大量的搜索,所以我已经能够拿出代码来纠正以前的失败。我试图完成的是从UITextField接受用户输入,并将该输入添加到我的TableView中,该TableView由plist填充。我的plist的根值是dictionary,我想保留它。我的问题是,当调用writeToFile时,我完全过度写入现有值,而不是插入、添加或附加到现有数据。我试图合并这两个字典的尝试似乎不起作用,因为只有新的值被存储到plist中。你知道我错在哪里吗?下面的代码就是我所拥有的 //////////*******
writeToFile
时,我完全过度写入现有值,而不是插入、添加或附加到现有数据。我试图合并这两个字典的尝试似乎不起作用,因为只有新的值被存储到plist中。你知道我错在哪里吗?下面的代码就是我所拥有的
//////////********** Add New Cell When OK is Chosen
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
UITextField *newDevice = [alertView textFieldAtIndex:0];
NSLog(@"newDevice - %@",newDevice.text);
if (alertView.tag == 1 && buttonIndex == 1){
NSMutableDictionary *input = [[NSMutableDictionary alloc]init];
[input setObject:[NSArray arrayWithObject:newDevice.text] forKey:@"Room"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Test.plist"];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
// Combine the two Dictionaries to create one
[dictionary addEntriesFromDictionary:input];
// Write Combined Dictionary to plist
[dictionary writeToFile:path atomically:YES];
// Add Newly Created text to Table because reload table doesn't do it
[myTableData addObject:newDevice.text];
// Reload Table Data even though it seems useless
[myTable reloadData];
}
}
我猜你把钥匙
Room
的值写得太多了
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Test.plist"];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
// Get exist input from plist
NSMutableArray *inputFromPlist = dictionary[@"Room"];
// add new object to input
[inputFromPlist addObject:newDevice.text];
// set Room with modified object
[dictionary setObject:inputFromPlist forKey:@"Room"];
// Write Combined Dictionary to plist
[dictionary writeToFile:path atomically:YES];
// do something after saving plist ...