NSMutableDictionary를 사용하여 3 개의 키/값 쌍을 보유하고 있습니다. 값은 NSNumber 형식의 bool입니다. 그럼 셀을 누르면 값이 YES에서 NO로 또는 그 반대로 변경되어 데이터를로드하는 테이블 뷰가 있습니다.NSMutableDictionary setValue : forKey가 때때로 실패합니다
이 셀을 눌렀을 때 값이 다음은 NSDictionary에 에서 값을 취할 I 시도 세 가지 방법 사전
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
}
의 마지막 키/값 쌍을 제외하고, 올바르게 변경 될 것으로 보인다 NO/YES를 사용하면 NO가 사용 되더라도 YES로 반환되므로 [NSNumber numberWithBool : 0/1]을 수행하고 있습니다.
상관없이 나는 3 가지 방법에서 셀, 결과를 누르면 얼마나 많은 시간은이 같은 ...
가 어떻게이 문제를 해결할 수있다?
THEOS에서 mobilesubtrate를 사용하고 있습니다.
표시되는 오류는 무엇입니까? – duci9y
"NO/YES를 사용하면 NO가 사용 되더라도 YES로 반환되므로 [NSNumber numberWithBool : 0/1]을 수행하고 있습니다." - 당신이 Objective-C에 비교적 새로운 사람이라고 가정하는 것이 안전할까요? 이것은 단지 사실이 아닙니다. – Tommy
지금 iOS 프로그래밍에 익숙하지 않다면, 지금 당장 탈옥구 개발에 들어갈 것이라고 충고합니다. 먼저 기본 사항을 지우십시오. – duci9y