【发布时间】:2016-01-20 14:55:30
【问题描述】:
我在 Swift 中遇到了演员问题
这里是代码:
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]
}
}
在某些情况下,我希望表示 [“result”] 等于 nil,在这种情况下,当我打印表示 [“result”] 时,调试器给我 nil,但我仍然通过条件并在记录,当它执行下一行时它崩溃 致命错误:在展开可选值时意外发现 nil 这是正常的,因为我尝试解开一个 nil 值!
但我确实发现如果我这样做:
var result : [String:AnyObject] = representation as! [String : AnyObject];
if result["result"] != nil {
print("result = \(result["result"])")
result = representation["result"] as! [String : AnyObject]
}
效果不错
我知道,我知道你们中的一些人会说:你们找到了解决方案,为什么要在 stackoverflow 上发帖—— 我这样做是因为我想了解为什么第一个解决方案不起作用,并且因为我的错误肯定不是特定于这种情况。
【问题讨论】:
标签: ios swift casting anyobject