在UITableView上添加和保存数据

时间:2015-11-27 20:59:16

标签: ios objective-c uitableview

我有一个正在运行的方法,但它没有保存我输入的数据。

这是我用来在

上输入数据的代码
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
    NSString *tempTextField = [alertView textFieldAtIndex:0].text;

        if (!numbers) {
            numbers = [[NSMutableArray alloc] init];

        }
        [[NSUserDefaults standardUserDefaults] setObject:tempTextField forKey:@"Save"];
        [numbers insertObject:tempTextField atIndex:0];
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        [self.myTableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    } }

它使用带有纯文本输入的UIAlertView。我尝试使用NSUSerDefaults使用上述方法保存数据,并且我能够使用此代码检索viewDidLoad上的数据

-(void)viewDidLoad {
[super viewDidLoad];
NSArray *siteNameValue = [[NSUserDefaults standardUserDefaults] valueForKey:@"Save"];

    numbers = [[NSMutableArray alloc] initWithObjects:siteNameValue, nil];
}

但它只保存输入的一个数据,它不会保存多个数据。任何线索?

变量号是NSMutableArray。

3 个答案:

答案 0 :(得分:1)

您可以在用户默认值中存储NSMutableArray创建的alertView:clickedButtonAtIndex对象,并在viewDidLoad中重复使用:

[numbers insertObject:tempTextField atIndex:0];
[[NSUserDefaults standardUserDefaults] setObject:numbers forKey:@"Save"];

您可以在viewDidLoad中获取具有相同内容的数组,如下所示:

NSMutableArray *numbers = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"Save"] mutableCopy];

答案 1 :(得分:0)

问题是你只保存了一个NSString,而不是NSUserDefaults中的NSArray。

您需要保存“数字”(整个NSArray),并将其作为数组加载(无需在加载时进行额外封装)。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
    NSString *tempTextField = [alertView textFieldAtIndex:0].text;

    if (!numbers) {
        numbers = [[NSMutableArray alloc] init];

    }
    [[NSUserDefaults standardUserDefaults] setObject:numbers forKey:@"Save"];
    [numbers insertObject:tempTextField atIndex:0];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.myTableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
} 
}

-(void)viewDidLoad {
    [super viewDidLoad];
    numbers = [[NSUserDefaults standardUserDefaults] valueForKey:@"Save"];
}

答案 2 :(得分:0)

解决方案

这是使用UIALertView纯文本样式在tableview上添加和保存数据的方法。

 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
        if (buttonIndex == 1) {

            NSString *tempTextField = [alertView textFieldAtIndex:0].text;

            if (!numbers) {
                numbers = [[NSMutableArray alloc] init];

            }
            [numbers insertObject:tempTextField atIndex:0];
            [[NSUserDefaults standardUserDefaults] setObject:numbers forKey:@"3"];
            [[NSUserDefaults standardUserDefaults] synchronize];

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
            [self.myTableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
        }
    }
下面的

是在viewDidLoad

下检索它
  NSMutableArray *siteNameValue = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"3"] mutableCopy];


    numbers = siteNameValue;