Swift:将可选<anyobject>强制转换为TimeInterval错误

时间:2017-08-29 10:21:31

标签: json swift dictionary swift3

我正在尝试从不同来源投射Optional<AnyObject>TimeInterval个对象。但我面临以下问题:

案例1:来自JSON文件

我有一个JSON文件

{
 ...
 "dispatchInterval":50,
 ...
}

然后我用JSONSerialization创建一个字典。

let settingJson = try? String(contentsOfFile:filePath, encoding: String.Encoding.utf8)

cofigDict:[String:AnyObject] = try JSONSerialization.jsonObject(with: settingJson.data(using: String.Encoding.utf8)!, options:.allowFragments) as! [String:AnyObject]

所以configDict[ConfigKey.dispatchInterval]的类型是 Optional(AnyObject)。并将它投射到TimeInterval作品(间隔不是,但设置为50):

let interval = configDict[ConfigKey.dispatchInterval] as? TimeInterval

案例2:来自字典

这里我使用字典来设置间隔值。

 let configDict = [... "dispatchInterval":50, ...] as [String : AnyObject]

此处我们不需要JSONSerialization

同样在这里configDict[ConfigKey.dispatchInterval]的类型也是如此 Optional(AnyObject)

但是将它投射到TimeInterval不起作用(间隔为nil)。

这不应该发生,因为我检查了两种情况下configDict[ConfigKey.dispatchInterval]的类型。它只是Optional(AnyObject)

还有什么方法

let interval = configDict[ConfigKey.dispatchInterval] as? TimeInterval

适用于这两种情况吗?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

 let interval : TimeInterval? =   configDict[ConfigKey.dispatchInterval]?.doubleValue