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?
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>")