Here is a simple adjustment. There are normally better ways to store data than nesting all these data collections, but this is a simple drop in replacement for what you have already that should stop the crashes.
// First check your listOfItems
NSDictionary *dictionary = NULL;
if (listOfItems.count > indexPath.section) {
dictionary = [listOfItems objectAtIndex:indexPath.section];
}
// Next check your dictionary isn't null.
NSArray *array = NULL;
if (dictionary) {
array = [dictionary objectForKey:@"News"];
}
// Next check your array and make sure your array has values.
NSString *selectedCategory = NULL;
if (array.count > indexPath.row) {
selectedCategory = [array objectAtIndex:indexPath.row];
}
// Finally do your stuff
if (selectedCategory) {
// Do your stuff
} else {
// Something went wrong along the way and you don't have a selectedCategory string.
}