I'm confronted to a problem with cast in Swift
Here the code :
init(response: NSHTTPURLResponse, representation: AnyObject)
{
super.init(entity:NSEntityDescription.entityForName("File", inManagedObjectContext: NSManagedObjectContext.currentContext())!, insertIntoManagedObjectContext:NSManagedObjectContext.currentContext());
var result : [String:AnyObject] = representation as! [String : AnyObject];
if representation["result"] != nil {
print("result = \(representation["result"])")
result = representation["result"] as! [String : AnyObject]
}
}
In some cases i expect that representation["result"] equal nil, in that cases when i print representation["result"] the debuger give me nil but I still pass the condition and display "result = nil" in the log and when it executes next line it crashes fatal error: unexpectedly found nil while unwrapping an Optional value Which is normal because I try to unwrap a nil value!
But I did found that if I do:
var result : [String:AnyObject] = representation as! [String : AnyObject];
if result["result"] != nil {
print("result = \(result["result"])")
result = representation["result"] as! [String : AnyObject]
}
It works pretty well
I know, I know some of you will say: you found a solution why post on stackoverflow- I did because i want to understand why the first solution doesn't work, and because my error is certainly not specific to this context.
Because you have to cast representation["result"]
to a dictionary before you check it, so if you type representation["result"] as! [String : AnyObject]
it should work properly.