"NSLog" n'est pas disponible: la fonction Variadic n'est pas disponible chez swift

je suis nouveau à swift. quand j'apprends juste les bases j'ai eu cette erreur NSLog

Voici mon code :

import UIKit

class ViewController: UIViewController {

     var myString: NSString?

    override func viewDidLoad() {
        super.viewDidLoad()
        myString = "himanth"
        print(myString)
        NSLog("%@" , myString)
        // Do any additional ssetup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

si je déclare myString comme ceci

var myString: NSString!

C'est bien d'utiliser NSLog et je peux en mesure de voir la console.

mais déclarer une chaîne de caractères comme celle-ci cause un problème

var myString: NSString?

Il reflète à NSLog et affichage de l'erreur.

Quel est le problème avec ça?

22
demandé sur pkamb 2016-10-03 11:14:59

2 réponses

Si vous déclarez var myString: NSString? en option, alors vous devez vous assurer qu'il a une valeur avant de vous passer à l' NSLog.

Si vous pouviez le faire comme ça alors NSLog("%@" , myString!). Si myString est nul, et que vous mettez ! le programme se bloque et vous obtiendrez

fatal error: unexpectedly found nil while unwrapping an Optional value.

mais si elle a une valeur le programme va continuer comme normal et imprimer

2016-10-03 10:26:25.077 Swift3.0[65214:1579363] Test

j'ai écrit myString = "Test".

18
répondu Rashwan L 2016-10-03 08:27:34

NSLog() ne peut pas imprimer les options Swift.

let optional: String?
NSLog("%@", optional) // 'NSLog' is unavailable: Variadic function is unavailable

let nonOptional: String
NSLog("%@", nonOptional) // Ok!

NSLog("%@", optional ?? "value-if-nil") // Ok!

fixer en passant une valeur non optionnelle à NSLog() à la place.

NOTE:

print() imprimer les options Swift.

10
répondu pkamb 2018-09-13 18:30:47