重新启动应用程序时,如何保留UITextField中存储在plist中的数据?

时间:2010-04-21 13:10:22

标签: iphone cocoa-touch uitableview uitextfield

我使用plist存储在UITextFields中输入的数据。但是,当我重新启动应用程序时,之前输入的所有数据都被删除了。如何保留Plist中的数据。我有一个UITableView,当触摸一个单元格时,会出现一个带有两个UITextField的视图。 nameField和descriptionField。我以这种方式存储数据。

我的代码是。

-(void)save:(id)sender
{

    indexOfDataArray = temp;

    NSString *string1 = [[NSString alloc]init];
    NSString *string2 = [[NSString alloc]init];
    string1 = nameField.text;
    string2 = descriptionField.text;
    NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:string2, string1, nil];
    //NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"value", string2, @"key", string1, @"index", [NSNumber numberWithInt:indexOfDataArray], nil];

    [myArray addObject:myDict];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"tableVideoData.plist"]; 

    [myArray writeToFile:path atomically:YES];

    UIAlertView *alertMesage = [[UIAlertView alloc] initWithTitle: @"Save Alert" message:@"The data entered is saved" delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil] ;
    [alertMesage show];
    [alertMesage release];
}

文件的路径是

/Users/srikanth/Library/Application Support/iPhone Simulator/User/Applications/31DEFEE7-A468-44BD-B044-53BEA3391C1A/Documents

但问题是每次重新启动应用程序时,数据都会在新文件夹的新plist文件中创建。那么,我如何将数据存储在一个plist中呢?

谢谢。

1 个答案:

答案 0 :(得分:1)

错误是由于数组太小而触发的;您尝试在超出数组上限的索引处插入对象。

如果要同时保留索引和数据,请将索引存储在字典中:

NSDictionary *myDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"value", string2, @"key", string1, @"index", [NSNumber numberWithInt:indexOfDataArray], nil];
[myArray addObject:myDict];