Ios 保存字符串以删除旧数据

Ios 保存字符串以删除旧数据,ios,objective-c,plist,Ios,Objective C,Plist,我成功地将我的字典添加到plist,但当我第二次添加时,它会将我的旧字典从plist中删除。 这是我的密码: NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *plistPath = [documentsPath stringBy

我成功地将我的字典添加到plist,但当我第二次添加时,它会将我的旧字典从plist中删除。 这是我的密码:

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"favQuote.plist"];


NSDictionary *plistDict = [[NSDictionary alloc] initWithObjectsAndKeys:self.txtQuote.text,@"quote",self.lblAuthor.text,@"author",nil];

NSError *error = nil;
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:plistDict format:NSPropertyListXMLFormat_v1_0 options:NSPropertyListWriteStreamError error:&error];

if(plistData)
{
    [plistData writeToFile:plistPath atomically:YES];
    NSLog(@"Data saved sucessfully");
}
else
{
    NSLog(@"Data not saved");
}

如何在不丢失旧数据的情况下添加新字典?

您应该将数组字典存储在文档目录中,例如

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"favQuote.plist"];

NSFileManager *manager = [NSFileManager defaultManager];

NSMutableArray *arr = [[NSMutableArray alloc]init];

if ( [manager fileExistsAtPath:plistPath]) {

    NSData *data = [NSData dataWithContentsOfFile:plistPath];
    arr = (NSMutableArray*)[NSKeyedUnarchiver unarchiveObjectWithData:data];


}


NSDictionary *plistDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"test",@"quote",@"test2",@"author",nil];

[arr addObject:plistDict];


NSData *plistData = [NSKeyedArchiver archivedDataWithRootObject:arr];



if(plistData)
{
    [plistData writeToFile:plistPath atomically:YES];
    NSLog(@"Data saved sucessfully");
}
else
{
    NSLog(@"Data not saved");
}
然后您可以检索并使用您的值,如

   NSMutableArray *arr1 = [[NSMutableArray alloc]init];

if ( [manager fileExistsAtPath:plistPath]) {

    NSData *data = [NSData dataWithContentsOfFile:plistPath];
    arr1 = (NSMutableArray*)[NSKeyedUnarchiver unarchiveObjectWithData:data];


}
if (arr1.count > 0) {

    NSDictionary *firstDic = [arr1 objectAtIndex:0];

}

第二次写同名词典!是的,我必须将我的dic添加到plist中,该dic具有相同的密钥如果您使用相同的密钥名称,则会将新数据覆盖到旧数据。您希望最终数据的格式是什么?最终数据在数组@Lion中