Consider the following code:
var defaults = NSUserDefaults.standardUserDefaults()
var userPref = defaults.stringForKey("userPref")!
printString(userPref)
func printString(string: String) {
println(string)
}
Where is the bug? What does this bug cause? What’s the proper way to fix it?
Answer Posted / iosraj
The second line uses the stringForKey method of NSUserDefaults, which returns an optional, to account for the key not being found, or for the corresponding value not being convertible to a string.
During its execution, if the key is found and the corresponding value is a string, the above code works correctly. But if the key doesn’t exist, or the corresponding value is not a string, the app crashes with the following error:
fatal error: unexpectedly found nil while unwrapping an Optional value
The reason is that the forced unwrapping operator ! is attempting to force unwrap a value from a nil optional. The forced unwrapping operator should be used only when an optional is known to contain a non-nil value.
The solution consists of making sure that the optional is not nil before force-unwrapping it:
let userPref = defaults.stringForKey("userPref")
if userPref != nil {
printString(userPref!)
}
An even better way is by using optional binding:
if let userPref = defaults.stringForKey("userPref") {
printString(userPref)
}
| Is This Answer Correct ? | 1 Yes | 0 No |
Post New Answer View All Answers
Can structs inherit swift?
What are jsonencoder and jsondecoder?
What do you mean by the term “defer”?
What are properties in swift?
What is string in swift?
What is nsrange in swift?
How proficient are you in objective-c and swift? Can you briefly describe their differences?
Explain deinitializer in swift programming language?
What is the difference between swift and xcode?
What is the floating point numbers and what are the types of floating number in swift?
How is swift different from objective-c?
Explain some design patterns which we normally use during the app development.
Do loops swift?
What is nested function in swift?
Can you explain regular expression and responder chain?