J'ai mis à jour Xcode
vers 7.3 et maintenant j'ai un avertissement à la fonction que j'utilise pour créer des chaînes aléatoires.
J'ai essayé de changer l'instruction for
avec for (i in 0 ..< len){...}
cependant, l'avertissement est devenu une erreur.
Comment puis-je supprimer l'avertissement?
static func randomStringWithLength (len : Int) -> NSString {
let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let randomString : NSMutableString = NSMutableString(capacity: len)
for (var i=0; i < len; i += 1){ // warning
let length = UInt32 (letters.length)
let Rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(Rand)))
}
return randomString
}
La boucle de style C for
a été déconseillée dans Swift 3. Vous pouvez continuer à l'utiliser pendant un certain temps, mais elles disparaîtront certainement à l'avenir.
Vous pouvez réécrire votre boucle dans le style de Swift:
for i in 0..<len {
let length = UInt32 (letters.length)
let Rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(Rand)))
}
Puisque vous n'utilisez pas du tout i
dans le corps de la boucle, vous pouvez le remplacer par:
for _ in 0..<len {
// do stuffs
}
Ce BLOG m'a sauvé la vie.
[~ # ~] incrémentation [~ # ~]
for i in 0 ..< len {
}
[~ # ~] décrémentation [~ # ~]
for i in (0 ..< len).reverse() {
}
INDEXATION NON SÉQUENTIELLE
Utiliser où
for i in (0 ..< len) where i % 2 == 0 {
}
Utilisation de la foulée vers ou à travers
for i in 0.stride(to: len, by: 2) {
}
dans Swift 3 ça fait une erreur
un remplacement général a été publié et il suffit d'ajouter
Pour Swift 3 et besoin de changer l '"index"
for var index in stride(from: 0, to: 10, by: 1){}
J'ai eu du succès avec ce qui suit. Vous pouvez utiliser la boucle for comme suit - notez que la boucle for est inclusive, vous devrez donc peut-être vérifier que len est réellement supérieur à 0:
for i in 0...len - 1 {
let length = UInt32 (letters.length)
let Rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(Rand)))
}
Ou vous pouvez utiliser ceci:
for i in 0 ..< len {
let length = UInt32 (letters.length)
let Rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(Rand)))
}
BTW il semble que XCode 7.x ne vous aide à y arriver mais c'est un processus en deux étapes. Vous devez d'abord changer votre opérateur d'incrémentation (disons) i ++ en i + = 1, puis l'avertissement XCode vous aide à modifier la boucle.