Swift: NSDate 在加载后失去亚秒精度
Swift: NSDate losing sub-Second precision after loading
我有一个 NSDates 的二维数组,以亚秒精度工作。
但是当我这样保存数组时:
let pathes = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = pathes.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent("tj_001.plist")
var dicti = NSMutableDictionary()
dicti.setObject(tDate, forKey: "tTimes")
dicti.writeToFile(path, atomically: false)
并像这样加载它:
let dicti:AnyObject = NSDictionary(contentsOfFile: path)!
. . .
tDate = dicti.objectForKey("tTimes") as! [[(NSDate)]]
然后每个 NSDate 都失去了亚秒精度。它在哪里?
有人在 2009 年报告了这个错误。http://openradar.appspot.com/6768646
这听起来像是 plist 序列化中的一个基本缺陷(您通过 NSDictionary.writeToFile 隐含地使用了它)。
你必须自己序列化这些。在字典中将日期的小数部分保存为单独的 NSNumber 似乎很容易。
我有一个 NSDates 的二维数组,以亚秒精度工作。
但是当我这样保存数组时:
let pathes = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = pathes.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent("tj_001.plist")
var dicti = NSMutableDictionary()
dicti.setObject(tDate, forKey: "tTimes")
dicti.writeToFile(path, atomically: false)
并像这样加载它:
let dicti:AnyObject = NSDictionary(contentsOfFile: path)!
. . .
tDate = dicti.objectForKey("tTimes") as! [[(NSDate)]]
然后每个 NSDate 都失去了亚秒精度。它在哪里?
有人在 2009 年报告了这个错误。http://openradar.appspot.com/6768646
这听起来像是 plist 序列化中的一个基本缺陷(您通过 NSDictionary.writeToFile 隐含地使用了它)。
你必须自己序列化这些。在字典中将日期的小数部分保存为单独的 NSNumber 似乎很容易。