【问题标题】:Cannot cast from Any? to NSSize?不能从 Any 施放?到NSSize?
【发布时间】:2016-11-03 20:22:38
【问题描述】:

我正在尝试从Any? 转换为NSSize?,更准确地说,如果我这样写:

Swift.print(screenDescription![NSDeviceResolution])

在控制台中我得到了这个:

但如果我这样写:

let dotsPerInch = screenDescription![NSDeviceResolution] as? NSSize

dotsPerInch 的值变为nil 而不是{144,144}

为什么?

【问题讨论】:

  • 如果是如何修复代码?
  • 先尝试投射到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 属性获取大小。

标签: casting swift3 optional


【解决方案1】:

看起来像一个编译器错误。 先转换为NSValue,然后在iOS上使用cgSizeValue属性获取大小,在macOS上使用sizeValue属性获取。

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2022-01-27
    • 2021-04-22
    • 2020-08-09
    相关资源
    最近更新 更多