У меня есть метод prepareForSegue в двух разных VC. Один использует оператор if
, а другой предназначен для использования switch
. Код практически идентичен, за исключением имен.PrepareForSegue mystery
Это один работает отлично:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
if ([[segue identifier] isEqualToString:@"addActivity"])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddActivityViewController *aavc = (AddActivityViewController *)navController.topViewController;
aavc.delegate = self;
ListActivity *addedActivity = (ListActivity *)[ListActivity MR_createInContext:localContext];
aavc.thisActivity = addedActivity;
}
Это один дает мне два предупреждения. В первой строке появляется предупреждение «Ожидаемое выражение». На второй строке, я получаю «Использование необъявленной идентификатора 'NavController'
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[SearchSpecs MR_truncateAllInContext:localContext];
[localContext MR_saveToPersistentStoreAndWait];
switch ([sender tag])
{
case aVsAButton_tag:
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AvsAViewController *aVSaVC = (AvsAViewController *)navController.topViewController;
aVSaVC.delegate = self;
SearchSpecs *thisSpec = (SearchSpecs *)[SearchSpecs MR_createInContext:localContext];
aVSaVC.currentSpec = thisSpec;
break;
default:
break;
}
}
Может кто-то пожалуйста, указать на мою ошибку
Благодаря
Edit:.?!
В проблема была устранена всеми ответами, и огромное спасибо всем!
Это мой новый код:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[SearchSpecs MR_truncateAllInContext:localContext];
[localContext MR_saveToPersistentStoreAndWait];
switch ([sender tag])
{
case aVsAButton_tag:
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AvsAViewController *aVSaVC = (AvsAViewController *)navController.topViewController;
aVSaVC.delegate = self;
SearchSpecs *thisSpec = (SearchSpecs *)[SearchSpecs MR_createInContext:localContext];
aVSaVC.currentSpec = thisSpec;
}
break;
default:
break;
}
}
Когда я добавил точку с запятой за предложение третьего ответа, я получил предупреждение, что «Switch случай находится в защищенном объеме» на default:
линии. Однако, когда я заключил код case
в фигурные скобки, все проблемы испарялись. Очень хорошо, что я помню!
Я хотел бы проверить все ответы, но поскольку все они прибыли одновременно, я надеюсь, что никто не обидится, если я приму верхнюю. +1 для всех, и еще раз спасибо!
Если вы создаете объект в корпусе коммутатора, вы должны использовать: '{}' – Larme