У меня есть array
из nsdictionaries
, каждый из словаря имеет значение boolean
, я хочу изменить boolean
значения, когда пользователь выбирает строку.EXC_BAD_ACCESS при изменении булева значения в NSDictionary
Но почему-то я получаю exc_bad_access
.
Это, как настроить массив словарей:
self.choosedfiles=[[NSMutableArray alloc] init];
for (NSString *s in fileListINDoc){
NSArray *partialDates =[s componentsSeparatedByString:@"."];//split string where - chars are found
NSFileManager* fm = [NSFileManager defaultManager];
NSDictionary* attrs = [fm attributesOfItemAtPath:[dataPath stringByAppendingPathComponent:s] error:nil];
NSDate *dateLocal =(NSDate*)[attrs objectForKey: NSFileModificationDate];
//creatre unique name for image _AKIAIVLFQKMSRN5JLZJA
NSString *uniqueFileName=[NSString stringWithFormat:@"%@_AKIAIVLFQKMSRN5JLZJA_%@.jpeg",[partialDates objectAtIndex: 0],[partialDates objectAtIndex: 1]];
BOOL isFileChoosen=NO;
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
dateLocal,@"date",uniqueFileName,@"imagename",s,@"name",isFileChoosen,@"isFileChoosen",
nil];
[tempArray addObject:params];
}
NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
NSArray *descriptors=[NSArray arrayWithObject: descriptor];
NSArray *reverseOrder=[tempArray sortedArrayUsingDescriptors:descriptors];
self.files=[[NSMutableArray alloc] initWithArray:reverseOrder];
Это вызывает ошибку, когда я пытаюсь изменить логическое значение, XCODE
показывает линию *params
словаря как ошибки:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *currentArticle = [self.files objectAtIndex:indexPath.row];
NSNumber* ischoosenObject =[currentArticle objectForKey:@"isFileChoosen"];
if ([ischoosenObject boolValue]==NO) {
BOOL isFileChoosen=YES;
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:[currentArticle objectForKey:@"date"],@"date",[currentArticle objectForKey:@"imagename"],@"imagename",[currentArticle objectForKey:@"name"],@"name",isFileChoosen,@"isFileChoosen",nil];
[self.files replaceObjectAtIndex:indexPath.row withObject:params];
[self.choosedfiles addObject:[currentArticle objectForKey:@"name"]];
}
}
Что может проблема в вышеприведенном коде? Спасибо,
Space
Спасибо за ответ, но почему BOOL isFileChoosen = NO; 'работает, когда я устанавливаю словарь в цикл for, но не работает в' didSelectRowAtIndexPath'? –
@SpaceDust Извините, я не знаю, почему это так. Однако я уверен, что это сломается. – trojanfoe