我正在使用 NSMutableDictionary 来保存 3 个键/值对。该值是 NSNumber 形式的布尔值。然后我有一个加载数据的表格视图,如果按下单元格,则值从“是”更改为“否”,反之亦然。
按下单元格时似乎正确更改了值,但字典中的最后一个键/值对除外
NSMutableDictionary *modsDict;
NSString *test = @"test";
NSString *test1 = @"test1";
NSString *test2 = @"test2";
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSString *key = [NSString stringWithFormat: @"%@", [[modsDict allKeys] objectAtIndex: indexPath.row]];
if (cell.accessoryType == UITableViewCellAccessoryNone) {
//enable
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[modsDict setValue: [NSNumber numberWithBool: 1] forKey: key];
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
[modsDict setValue: [NSNumber numberWithBool: 0] forKey: key];
}
}
-(void)viewDidLoad {
%orig;
modsDict = [[NSMutableDictionary alloc] init];
[modsDict setObject: [NSNumber numberWithBool: 0] forKey:test];
[modsDict setObject: [NSNumber numberWithBool: 0] forKey:test1];
[modsDict setObject: [NSNumber numberWithBool: 0] forKey:test2];
... //init tableview
}
-(void)someMethodThatIHookTo {
NSNumber *val = [modsDict objectForKey: test2];
if ([val boolValue] == YES) {
//do something
}
//this works for test and test1, but for test2 it crashed
bool lol = [[modsDict objectForKey: test2] boolValue];
if (lol) {
//so something
}
else {
}
//else is always called
if ([[modsDict objectForKey: test2] boolValue]) {
}
else { }
//if statement always true, never goes to else
}
这是我试图从我正在做的 NSDictionary 中获取价值的三种方式 [NSNumber numberWithBool: 0/1] 因为如果我使用 NO/YES,即使使用 NO,它也会返回为 YES。
无论我按了多少次单元格,3种方式的结果都是一样的......
我该如何解决这个问题?
请注意,我在 THEOS、mobilesubtrate 上使用它作为调整。