我正在尝试在选择表格行时切换布尔值。当我的表行包含NSObjects(在不同的类中)时,此代码正常工作...我简化了我的代码,以便行只包含字符串而不是对象(剪切类),但现在布尔值不会切换,因为我的实例变量是一个字符串。这是原始的工作代码:
在XYZObject中声明:
@property BOOL checked;
表视图didSelectRowAtIndexPath:
XYZObject *tappedItem = [myArray objectAtIndex:indexPath.row];
tappedItem.checked = !tappedItem.checked;
NSString *addedItem = cell.textLabel.text;
if(!tappedItem.checked) {
[newArray removeObject:addedItem];
} else {
[newArray addObject:addedItem];
}
当我将XYZObject更改为NSString并将Bool属性移动到表视图时,我在“NSString *”类型的对象上找不到“已检查属性”。将NSString更改为NSObject会做同样的事情。如果我更改NSString到XYZMyTableViewController,它现在将编译但在运行时由于“无法识别的选择器发送到实例”而中断。
所以我的问题是,我可以在一个字符串数组上切换'checked'Bol值吗?
UPDATE /溶液
我能够通过完全消除Bool并使用:
来解决问题if (cell.accessoryType == UITableViewCellAccessoryNone)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[newArray addObject:addedItem];
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
[newArray removeObject:addedItem];
}
我并不是特别高兴,因为我有其他一些使用'checked'的方法,但我应该能够以同样的方式重写它们。我仍然想知道为什么我无法在表格单元格中的字符串上切换bool值。