我有一个表格查看当添加单元格时,它不会像应用程序中已有的单元格一样工作。当我按下新单元格时,我的程序崩溃,我收到此错误: " SIGABRT"
这是我按下单元格时的代码:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES];
[self setCurrentChosenFund: [self.cells objectAtIndex:indexPath.row]];
[self setSelectedCell: [tableView cellForRowAtIndexPath:indexPath]];
if ([self.currentChosenFund valueForKey:@"Selected"] == [NSNumber
numberWithBool:YES])
{
//selectedCell.imageView.image = [UIImage imageNamed:@"checklist.png"];
[self.selectedCell setAccessoryType: UITableViewCellAccessoryNone];
[self.currentChosenFund setObject:[NSNumber numberWithBool:NO]
forKey:@"Selected"]; // ERROR IS ON THIS LINE :(
}
else
{
//selectedCell.imageView.image = nil;
[self.selectedCell setAccessoryType: UITableViewCellAccessoryCheckmark];
[self.currentChosenFund setObject:[NSNumber numberWithBool:YES]
forKey:@"Selected"];
}
[[NSUserDefaults standardUserDefaults] setObject:self.cells forKey:@"funds"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
有谁知道如何解决这个问题?
save:方法的代码是:
- (IBAction)saveButton:(id)sender {
NSLog(@"%@", textField.text);
CheckListPracticeViewController * obj = (CheckListPracticeViewController
*)self.parentViewController;
[obj.cells insertObject:[NSDictionary dictionaryWithObject:textField.text
forKey:@"name"] atIndex:0];
// [obj.cells insertObject:textField.text atIndex:0];
[self dismissModalViewControllerAnimated:YES];
}
好的,所以我将这行代码添加到我的saveButton:method:
[self.currentChosenFund setObject:[NSNumber numberWithBool:NO]
forKey:@"Selected"];
我仍然让应用程序崩溃!我已经尝试将此设置为YES和NO,但它不起作用。
答案 0 :(得分:1)
这更像是一个评论而不是答案,尽管它可能会变成两者。使用BOOL
作为密钥Selected
更为合乎逻辑。
或者,您可以使用
if ([[self.currentChosenFund valueForKey:@"Selected"] boolValue]) {
}
避免比较。
编辑:根据评论,我认为问题出在你的saveButton
方法上。您没有为“已选择”键设置对象,因此当您去检索它时,会出现错误。要解决此问题,请在此方法中将默认值设置为某个值。