我正在开发一个应用程序,我已经创建了plist,我正在向它添加数据......但是每次数据都被覆盖并且之前的数据丢失时,会发生什么。我的意思是假设我添加了一个叫做岩石的名字,下次当我添加岩石时,岩石被岩石覆盖,但我想要的是我的plist应该包含岩石和岩石等等...我在plist中添加数据用户输入....
这是我的代码。
-(IBAction) myplist:(id) sender//the data is saved in a plist by clicking on this button
{
NSLog(@"mylist Clicked");
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:searchLabel.text];
// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];
// This writes the array to a plist file. If this file does not already exist, it creates a new one.
[array writeToFile:plistPath atomically: TRUE];
}
答案 0 :(得分:0)
尝试使用序列将数据存储到pList。
1.从pList中检索旧数据到NSMutableDictionary / NSMutableArray
2.将新记录添加到NSMutableDictionary / NSMutableArray
中3.,写入文件
答案 1 :(得分:0)
您无法将数据附加到Plist。由于每次都在执行writeToFile,因此重写了plist文件。因此,最初存储的数据不会存在于其中。实现你想要的唯一另一种方法是从plist中检索数据数组。然后将新的数据对象添加到数组中。使用新附加的数组再次将plist文件写入磁盘。 希望这会有所帮助。
答案 2 :(得分:0)
我认为只需稍微修改一下代码即可达到您的目的。
NSLog(@"mylist Clicked");
NSMutableArray *array = [[NSMutableArray alloc] init];
// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];
//This copies objects of plist to array if there is one
[array addObjectsFromArray:[NSArray arrayWithContentsOfFile:plistPath]];
[array addObject:searchLabel.text];
// This writes the array to a plist file. If this file does not already exist, it creates a new one.
[array writeToFile:plistPath atomically: TRUE];