"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()
.