Ios 将新输入追加到文档文件夹中的plist

Ios 将新输入追加到文档文件夹中的plist,ios,objective-c,Ios,Objective C,经过大量的搜索,所以我已经能够拿出代码来纠正以前的失败。我试图完成的是从UITextField接受用户输入,并将该输入添加到我的TableView中,该TableView由plist填充。我的plist的根值是dictionary,我想保留它。我的问题是,当调用writeToFile时,我完全过度写入现有值,而不是插入、添加或附加到现有数据。我试图合并这两个字典的尝试似乎不起作用,因为只有新的值被存储到plist中。你知道我错在哪里吗?下面的代码就是我所拥有的 //////////*******

经过大量的搜索,所以我已经能够拿出代码来纠正以前的失败。我试图完成的是从UITextField接受用户输入,并将该输入添加到我的TableView中,该TableView由plist填充。我的plist的根值是dictionary,我想保留它。我的问题是,当调用
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 ...