Verständnisfrage: Objekt außerhalb der Schleife nil?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Moin,

    wenn man das nicht mit FastEnumeration, sondern mit einem NSEnumerator schreiben würde... dann wäre es vielleicht verständlicher ...

    Quellcode

    1. NSEnumerator *myEnumerator = [objects objectEnumerator;
    2. id object;
    3. while (nil != (object = [myEnumerator nextObject])) {
    4. //do something
    5. }


    dann bricht die schleife ja ab, weil es nil ist... jetzt müsste man nur nachsehen, ob FastEnumeration auch wirklich den ObjectEnumerato rnutzt... aber ich glaube schon...

    volker
  • DroneDeveloper schrieb:

    Quellcode

    1. id object = nil;
    2. NSInteger i;
    3. for (object in objects) {
    4. // object != nil
    5. i = [object[@"i"] integerValue];
    6. }
    7. // object == nil
    8. // i == letzter Integer-Wert aus der Schleife

    Warum ist object hier nach der Schleife nil?

    BTW: Dem Editor fehlen jegliche Tag-Buttons...

    Die Schleife läuft ja solange, bis das Objekt nil ist. Du hast bei jeder Schleife nach deren Durchlauf den Zustand, der zum Abbruch führte, nicht den letzten Zustand, der zu einem Durchlauf führte.

    Aber ich verstehe auch nicht, warum du das benötigst. Soll etwas nur mit dem letzten Objekt gemacht werden? Wenn du ein Array hast, erreichst du das ja leicht mit -lastObject (NSArray), entsprechend bei Ordered-Sets. Wenn du eine ungeordnete Collection hast, dann ist das letzte Objekt zufällig und ein zufälliges Objekt mit -anyObject erreichbar.

    Falls du aus irgendwelchen Gründen genau das letzte Objekt brauchst und eine ungeordnete Collection hast, kannst du es zwischenspeichern:

    Quellcode

    1. id object = nil;
    2. NSInteger i;
    3. id lastObject;
    4. for (object in objects) {
    5. // object != nil
    6. i = [object[@"i"] integerValue];
    7. lastObject = object;
    8. }
    9. // object == nil
    10. // i == letzter Integer-Wert aus der Schleife


    Warum auch immer …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?