Optional<AnyObject>
からTimeInterval
に異なるソースのオブジェクトをキャストしようとしています。スイフト:キャストオプション<AnyObject>からTimeIntervalエラー
ケース1:しかし、私は次の問題に直面していますJSONファイル
から私はその後、私はJSONSerialization
と辞書を作成JSONファイル
{
...
"dispatchInterval":50,
...
}
を持っています。
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)
です。そして、(間隔がゼロではなく、50に設定されている)TimeInterval
作品にキャスト:私は間隔の値を設定するために辞書を使用しています。ここ辞書から
:2
let interval = configDict[ConfigKey.dispatchInterval] as? TimeInterval
ケース。
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
方法はありますか?
私はそれが動作するはずのようなコードが見えると思います。この問題を再現するmcveを提供できますか?私はちょうど遊び場で走って、あなたが得ている結果を見ることができます。 – Sweeper