I load a value from a dictionary in a plist but when I print it to the console, it prints: Optional(Monday Title) rather than just "Monday Title".
How can I get rid of the Optional() of my value when printing?
var plistPath = NSBundle.mainBundle().pathForResource("days", ofType: "plist")
var plistArray = NSArray(contentsOfFile: plistPath!) as NSArray!
for obj: AnyObject in plistArray {
if var dicInfo = obj as? NSDictionary {
let todayTitle: AnyObject? = dicInfo.valueForKey("Title")
println(todayTitle)
}
}
One way to get rid of the Optional
is to use an exclamation point:
println(todayTitle!)
However, you should do it only if you are certain that the value is there. Another way is to unwrap and use a conditional, like this:
if let theTitle = todayTitle {
println(theTitle)
}
Paste this program into runswiftlang for a demo:
let todayTitle : String? = "today"
println(todayTitle)
println(todayTitle!)
if let theTitle = todayTitle {
println(theTitle)
}
With some try, I think this way is better.
(variableName ?? "default value")!
Use ??
for default value and then use !
for unwrap optional variable.
Here is example,
var a:String? = nil
var b:String? = "Hello"
print("varA = \( (a ?? "variable A is nil.")! )")
print("varB = \( (b ?? "variable B is nil.")! )")
It will print
varA = variable A is nil.
varB = Hello
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With