【发布时间】:2017-02-19 21:20:08
【问题描述】:
我正在尝试将CGSize 存储在UserDefaults 中。大小可以有CGFloat.infinity 的宽度或高度。我将大小放入NSValue 并使用NSKeyedArchiver 对其进行编码和解码:
let size = CGSize(width: CGFloat.infinity, height: 50)
let value = NSValue(cgSize: size)
let data = NSKeyedArchiver.archivedData(withRootObject: value)
let unarchivedValue = NSKeyedUnarchiver.unarchiveObject(with: data) as! NSValue
问题:当其中一个维度为.infinity时,未归档大小错误:
print(size == value.cgSizeValue) // true
print(size == unarchivedValue.cgSizeValue) // false
print(size) // width: inf, height: 50.0
print(unarchivedValue.cgSizeValue) // width: 50.0, height: 0.0
请注意,奇怪的是,宽度的值是之前的高度。
Double.infinity 的结果相同。
【问题讨论】:
-
我建议向 Apple 提交错误报告。
-
我会的。对于遇到此问题的任何人,Alex 向我指出了这个相关问题:stackoverflow.com/questions/17059941
标签: ios swift macos cocoa cocoa-touch