嗯,我不知道我的标题是否草拟得很好,但我会尽力解释我的问题,我想在NSUserDefaults中为IndexPath保存一个NSDate,这发生在viewWillDisappear
但是它崩溃时,它的保存正确,因为当我重新打开DatePicker加载我想要的日期,但保存日期在UserDefaults 时仍然崩溃因此,继承人我的代码,所以你可以看到发生了什么事......如何查看NSUserdefaults是否为零?
我读如果NSUserDefaults是零或不,所以我可以加载DatePicker的:
NSArray *indexParams = [self.userdefaults objectForKey:@"indexpath"];
NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow:indexParams[1]
inSection:indexParams[0]];
self.notificationDate = [self.userdefaults objectForKey:@"date"];
NSDate *date = [self.userdefaults objectForKey:[NSString stringWithFormat:@"%d", myIndexPath.row]];
if(date){
[self.NotSwith setOn:YES];
self.DatePicker.date = [self.userdefaults objectForKey:[NSString stringWithFormat:@"%d", myIndexPath.row]];
}else{
[self.NotSwith setOn:NO];
}
当我要保存日期在viewWillDisappear
其当崩溃发生:
NSArray *indexParams = [self.userdefaults objectForKey:@"indexpath"];
NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow:indexParams[1]
inSection:indexParams[0]];
NSDate *date = [self.userdefaults objectForKey:[NSString stringWithFormat:@"%d", myIndexPath.row]];
if(date){
// [self.userdefaults synchronize];
}
else{
[self.userdefaults setObject:self.DatePicker.date forKey:[NSString stringWithFormat:@"%d", myIndexPath.row]];
[self.userdefaults synchronize];
[[UIApplication sharedApplication] scheduleLocalNotification:local];
}
但成功保存的信息和日期选择器在重新启动时加载日期。
崩溃日志:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]'
所以希望我解释好,谢谢!
设置indexpath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSNumber *section = [NSNumber numberWithInt:indexPath.section];
NSNumber *rows = [NSNumber numberWithInt:indexPath.row];
[self.userdefaults setObject:@[section, rows] forKey:@"indexpath"];
}
洛特是一个非常可怕的工作,可怕的代码。你能描述一下功能目标吗?为什么涉及索引路径?你只想保存一个日期或其他对象? – danh
究竟是什么行是抛出的异常? – Paulw11
根据didSelectRowAtIndexPath的索引路径保存日期,因此当您退出并重新打开时,您可以看到您何时设置了datePicker。这个日期选择器是为选中的tableview行显示的,我希望我解释一下,如果你能解释为什么它可能是一个可怕的代码,我会尽我所能开始我的工作,非常感谢 –