Frage

-(void) setupMyLocation {

NSArray *viewControllerArray = [navigationUpdateFromDetail.navigationController viewControllers];
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 2;
NSLog(@"Parent view controller: %@", [viewControllerArray objectAtIndex:parentViewControllerIndex]);

switch(parentViewControllerIndex){
    case 0:

    self.myLocation = navigationUpdateFromDetail.currentLocation;
        break;
    case 1:
        YANAVAppDelegate *currentObject = (YANAVAppDelegate*)[[UIApplication sharedApplication]delegate];

    //  self.myLocation = currentObject.givenLocation;

        break;
    default: break;
}

}       

Ich kann nicht scheinen, um herauszufinden, warum ich erhalte eine Fehlermeldung „erwartet Ausdruck vor YANAVAppdelegate“.

Ich kann nicht meinen Finger scheinen zu setzen, warum dies nicht kompiliert. jeder Eingang wird geschätzt .. Vielen Dank im Voraus.

War es hilfreich?

Lösung

definiert nicht die Variable (currentObject) innerhalb der switch-Anweisung.

Andere Tipps

Wenn Sie eine Variable innerhalb einer Case-Anweisung zu definieren, können Sie es tun geschweiften Klammern (diese Technik funktioniert auch in C ++, übrigens):

-(void) setupMyLocation {

    NSArray *viewControllerArray = [navigationUpdateFromDetail.navigationController viewControllers];
    NSUInteger parentViewControllerIndex = [viewControllerArray count] - 2;
    NSLog(@"Parent view controller: %@", [viewControllerArray objectAtIndex:parentViewControllerIndex]);

    switch(parentViewControllerIndex) {
        case 0:
            self.myLocation = navigationUpdateFromDetail.currentLocation;
            break;

        case 1:
        {
            YANAVAppDelegate *currentObject = (YANAVAppDelegate*)[[UIApplication sharedApplication]delegate];

        //  self.myLocation = currentObject.givenLocation;

            break;
        }

        default: 
            break;
    }
}       

Ein C ++ Guru erklärte mir einmal, dass dieser Stapel Ihre Variablen einen Zusammenhang gibt, für sie zu existieren, die der Switch / Case-Anweisung nicht automatisch zur Verfügung stellen. Denken Sie daran, löschen / Release-Objekte, wenn Sie in diesem Zusammenhang schaffen, sonst ist es eine einfache Möglichkeit, einen Speicherverlust zu haben.

Ich persönlich benutze immer geschweifte Klammern in meinem Fall Anweisungen, wenn Sie mich fragen;) Sie nie wissen, ob in Zukunft Sie sie brauchen werden, macht es die Dinge einfacher zu verstehen,

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top