2016-09-11 6 views
5

Ich habe eine Funktion mit einer for-Schleife in der es:Beenden Iteration der for-Schleife Swift iOS

func example() { 
    // create tasks 
    for link in links { 
    let currIndex = links.indexOf(link) 

    if let im = story_cache?.objectForKey(link) as? UIImage { 
     if ((currIndex != nil) && (currIndex < content.count)) { 
     if (content[currIndex!].resource_type == "image") { 
      content[currIndex!].image = im 
      return 
     } 
     } 
    } else { 
     if ((currIndex != nil) && (currIndex < content.count)) { 
     if (content[currIndex!].resource_type == "video") { 
      let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
      let documentsDirectory : NSString = paths[0] 
      let appFile = documentsDirectory.stringByAppendingPathComponent(content[currIndex!].id! + ".mov") 
      let local_URL = NSURL(fileURLWithPath: appFile) 
      if let cached_URL = story_cache?.objectForKey(local_URL) as? NSURL { 
      content[currIndex!].videoURL = cached_URL 
      return 
      } 
     } 
     } 
    } 

    let dltask = session.dataTaskWithURL(link, completionHandler: { (data, response, error) in 
     // MORE CODE..... 
    }) 
    } 
} 

Im Grunde, was ich erreichen will ist, dass wenn wir eine der return Aussagen erreichen Sie den Code für diese Ausführung beendet insbesondere link in der Schleife, und die Schleife bewegt sich auf die nächste Verbindung. Wenn KEINE der Return-Anweisungen erreicht sind, möchte ich die dltask ausgeführt werden. Ich könnte dies mit einer Menge anderer Anweisungen erreichen, aber ich denke, das würde den Code ziemlich unordentlich machen. Mache ich das richtig mit return?

Antwort

14

Sie suchen continue:

Von Apple's Swift Book:

Die Aussage weiter erzählt eine Schleife zu stoppen, was es tut und wieder am Anfang der nächsten Iteration durch die Schleife starten . Es heißt "Ich bin fertig mit der aktuellen Schleife Iteration" ohne die Schleife insgesamt zu verlassen.

Ersetzen Sie einfach return mit continue und es wird bis zur for Schleife und führen Sie es wieder mit dem nächsten Link zurück.

5

Sie können break outer oder nur break verwenden, um die Schleifenanweisung zu beenden und die dltask auszuführen.

hoffe es hilft.