Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'NSLog' is unavailable: Variadic function is unavailable in swift

Tags:

ios

swift

nslog

I'm new to swift. when I'm learning just basics I got this error at NSLog

Here is my code :

import UIKit  class ViewController: UIViewController {           var myString: NSString?      override func viewDidLoad() {         super.viewDidLoad()         myString = "himanth"         print(myString)         NSLog("%@" , myString)         // Do any additional setup after loading the view, typically from a nib.     }      override func didReceiveMemoryWarning() {         super.didReceiveMemoryWarning()         // Dispose of any resources that can be recreated.     }   } 

If I am declaring myString like this

var myString: NSString! 

It's fine to use NSLog and I can able to see console as well.

But declaring string like this causing problem

var myString: NSString? 

It reflects at NSLog and showing error.

What is the problem with that?

like image 666
Himanth Avatar asked Oct 03 '16 08:10

Himanth


1 Answers

If you declare var myString: NSString? as an optional then you need to make sure it has a value before you pass it to the NSLog.

So you could do it like this then NSLog("%@" , myString!). If myString is nil and you put ! the program will crash and you will get

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

But if it has a value the program will continue as normal and print out

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

I wrote myString = "Test".

Another example as @Grimxn mentioned is the coalescing operator.

NSLog("%@", myString ?? "<nil>") 
like image 123
Rashwan L Avatar answered Oct 14 '22 13:10

Rashwan L