【发布时间】:2014-12-22 15:14:29
【问题描述】:
我有一个 NSValue 对象,它可以“装箱”一个未知类型(CGPoint、CGRect 等)的实例,我需要在运行时确定这种类型。我将如何在 Swift 中做到这一点?
我试图做这样的事情:
if ((value as Any) is CGPoint) {}
else if (((value as Any) is CGRect)) {}
...
当value 是一个包含 CGPoint 的 NSValue 对象时,它不会进入 if 子句。
然后当我打印value 时,它给了我NSPoint: {150, 150},我认为这就是它永远不会出现在子句中的原因。
任何想法为什么会发生这种情况以及如何解决它?
非常感谢!
【问题讨论】:
-
在 NS* 和 CG* 之间有一个免费的桥接。您是否尝试在 if 子句中使用 NSPoint 而不是 CGPoint ?例如。
if value is NSPoint { -
我试过了,但是编译器不接受这种比较并且我得到一个错误'Use of undeclared type NSPoint'