【发布时间】:2016-11-03 20:22:38
【问题描述】:
我正在尝试从Any? 转换为NSSize?,更准确地说,如果我这样写:
Swift.print(screenDescription![NSDeviceResolution])
在控制台中我得到了这个:
但如果我这样写:
let dotsPerInch = screenDescription![NSDeviceResolution] as? NSSize
dotsPerInch 的值变为nil 而不是{144,144}。
为什么?
【问题讨论】:
-
这可能与 SE-0139 有关吗? github.com/apple/swift-evolution/blob/master/proposals/…
-
如果是如何修复代码?
-
先尝试投射到
NSValue。另外,如果你强制转换 (as!),会抛出什么错误? -
无法将“NSConcreteValue”(0x100dff888)类型的值转换为“__C.CGSize”(0x100632168)。无法将“NSConcreteValue”(0x100dff888)类型的值转换为“__C.CGSize”(0x100632168)。 2016-11-03 21:44:33.632961 myApp [9436:967999] 无法将“NSConcreteValue”(0x100dff888)类型的值转换为“__C.CGSize”(0x100632168)。 2016-11-03 21:44:33.632966 MyApp [9436:967986] 无法将“NSConcreteValue”(0x100dff888)类型的值转换为“__C.CGSize”(0x100632168)。
-
好的,所以将其转换为
NSValue,然后使用cgSizeValue属性获取大小。