ich habe:Warum Schleifenvariable werden `nil` nach Schleife
NSDictionary* server;
for (server in self.servers)
{
if (<some criterium>)
{
break;
}
}
// If the criterium was never true, I want to use the last item in the
// the array. But turns out that `server` is `nil`.
Der Loop-Block ändert sich nie server
.
servers
ist ein NSMutableArray
mit Wörterbüchern, eine Eigenschaft, die während der Schleife nicht geändert wird.
Warum hat server
den Wert nil
, nachdem die Schleife beendet wurde?
War das erste Mal, dass ich eine solche Variable nach der Schleife verwendet. Ohne zu viel zu denken, nahm ich es wie funktionieren würde (in den alten C Tagen):
int i;
for (i = 0; i < n; i++)
{
...
}
Die Schleife muss etwas beendet werden, wenn also die Dinge in self.servers ausgehen, um sie dem Server für die Schleife zuzuweisen, ist nil der logische Endwert. –
Ist die zweite "Server" -Variable eine separate Deklaration - das heißt, ist sie nur für den For-Block (dh das Original wurde nie zugewiesen)? –
Diese Funktion ist nützlich, wenn Sie nach einem bestimmten Objekt in einer Sammlung suchen und die Schleife bei der Suche "unterbrechen". Wenn die Schleifenvariable mit dem Wert 'nil' endet, hat die Schleife das gewünschte Objekt nicht gefunden. – user3386109