"NSLog" недоступен: функция Variadic недоступна в быстрой

Я новичок в быстроте. когда я изучаю только основы, я получил эту ошибку в NSLog

Вот мой код:

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.
    }


}

Если я объявляю myString следующим образом

var myString: NSString!

Хорошо использовать NSLog, и я также могу видеть консоль.

Но объявление этой строки как вызывающей проблемы

 var myString: NSString?

Он отражает в NSLog и показывает ошибку.

В чем проблема с этим?

Ответы

Ответ 1

Если вы объявите var myString: NSString? как необязательный, то вам нужно убедиться, что оно имеет значение, прежде чем передать его в NSLog.

Итак, вы можете сделать это так, а затем NSLog("%@" , myString!). Если myString равен нулю, и вы положите !, программа выйдет из строя, и вы получите

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

Но если у него есть значение, программа будет продолжать работать как обычно и распечатывать

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

Я написал myString = "Test".

Ответ 2

NSLog() не может печатать опции 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!

Исправить, передав вместо необязательного значения значение NSLog().