2016-03-23 6 views
23

Ich lade nur einen neuen Xcode (7.3) mit swift 2.2 herunter.#warning: C-style für Anweisung ist veraltet und wird in einer zukünftigen Version von Swift entfernt

Es hat eine Warnung:

C-Stil für Anweisung ist veraltet und wird in einer zukünftigen Version von Swift entfernt werden.

Wie kann ich diese Warnung beheben?

+1

Verwendung c-style nicht für Schleifen ... zu beheben: P seit seinem im Grunde Code sagt * wird * Pause in der Zukunft Warum also das Unvermeidliche verzögern? Verwenden Sie 'für i in 0 ... 10 {}' statt – Fonix

+0

Mögliches Duplikat von http://stackoverflow.com/questions/36213333/swift-3-c-style-for-statement-is-deprecated –

+1

Nicht ganz ein Duplikat von [Ersatz für C-style Loop in Swift 2.2] (http://stackoverflow.com/questions/36166907/replacement-for-c-style-loop-in-swift-2-2) - das ist für spezielle Fälle wo Der neue Stil kann die Funktionalität nicht genau replizieren. –

Antwort

70

Entfernen for init; comparison; increment {} und auch entfernen ++ und -- leicht. und verwenden Swift ziemlich for-Schleife in

// WARNING: C-style for statement is deprecated and will be removed in a future version of Swift 
    for var i = 1; i <= 10; i += 1 { 
     print("I'm number \(i)") 
    } 

Swift 2.2:

// new swift style works well 
    for i in 1...10 { 
     print("I'm number \(i)") 
    } 

Für Dekrement Index

for index in 10.stride(to: 0, by: -1) { 
     print(index) 
    } 

Oder Sie können reverse() wie

for index in (0 ..< 10).reverse() { ... } 

für Schwimmer Typ (there is no need to define any types to index)

for index in 0.stride(to: 0.6, by: 0.1) { 
    print(index) //0.0 ,0.1, 0.2,0.3,0.4,0.5 
} 

Swift 3 verwenden.0:

Von Swift3.0, Die stride(to:by:) Methode auf Strideable mit einer freien Funktion wurdestride(from:to:by:) ersetzt

for i in stride(from: 0, to: 10, by: 1){ 
    print(i) 
} 

Für Dekrement Index in Swift 3.0 können Sie reversed()

for i in (0 ..< 5).reversed() { 
    print(i) // 4,3,2,1,0 
} 

verwenden enter image description here


Andere dann for each und stride(), können Sie While Loops

var i = 0 
while i < 10 { 
    i += 1 
    print(i) 
} 

Repeat-While Loop:

var a = 0 
repeat { 
    a += 1 
    print(a) 
} while a < 10 

Check-out Die Steuerung geht in The Swift Programming Language Guide

+0

Dieser Stil können wir, aber wenn wir Schleife von Array und wenn dieses Array Null Wert haben, es Crash – sony

+2

@sony: Siehe [this Q & A] (http://Stackoverflow.com/a/36167115/4573247) für Alternativen zu die C-Style-Schleife, die Arrays mit der Länge null ermöglicht (ohne zusätzliche if-Anweisungen). – dfri

+0

Ja, hab 'es ... aber es gibt dir die Lösung 'i in

1

verwenden habe ich den gleichen Fehler mit diesem Code :

for (var i = 1; i != video.getAll().count; i++) { 
    print("show number \(i)") 
} 

Wenn Sie versuchen, es zu beheben mit Xcode bekommt man kein Glück ... So müssen Sie den neuen schnellen Stil verwenden (in Schleife):

for i in 1...video.getAll().count { 
    print("show number \(i)") 
} 
+0

wie zum Dekrementieren verwenden? – sony

0

Blockquote

verwenden stattdessen

if(myarr.count) 
{ 
    for i in 1...myarr?.count { 
     print(" number is \(i)") 
    } 
} 
+0

Wie zum Dekrementieren verwenden? – sony

+1

Siehe http: // stackoverflow.com/questions/35032182/swift-c-style-loops-deprecated-dekrement-index –

+1

@sony 'für i in myarr.count.stride (bis: 0, by: -1) {...}' – dfri

2

Für diesen ki nd "für" Schleife:

for var i = 10; i >= 0; --i { 
    print(i) 
} 

können Sie schreiben:

for i in (0...10).reverse() { 
    print(i) 
}