我正在使用NSMutableDictionary來保存3個鍵/值對。該值是以NSNumber的形式布爾值。 然後我有一個表格視圖加載數據,如果單元格被按下,值從YES更改爲NO,反之亦然。NSMutableDictionary setValue:forKey有時失敗
看來,按下電池,當值被正確地改變,除了在字典
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作爲一個調整。
你看到什麼錯誤? – duci9y
「我正在做[NSNumber numberWithBool:0/1],因爲如果我使用NO/YES,即使使用NO,它也會返回YES。」 - 假設你對Objective-C比較陌生嗎?事實並非如此。 – Tommy
你現在不太熟悉iOS編程,我現在建議不要進入越獄開發。首先清理你的基礎知識。 – duci9y