我試圖將Optional<AnyObject>
轉換爲TimeInterval
對象來自不同來源。但我現在面臨的以下問題:Swift:casting可選<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
作品兩種情況?
我覺得你的代碼看起來像它應該工作。你能否提供一個能夠再現這個問題的麥克風?我可以在操場上跑步,看看你得到的結果。 – Sweeper