我有一个正在运行的方法,但它没有保存我输入的数据。
这是我用来在
上输入数据的代码-(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。
答案 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;