- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有点不明白下面的代码是怎么回事。我的印象是 children
是一个可选的,基于 node.children
(类型为 [AnyObject]
)是 [SKNode]
我看到的是 children
永远不会是 nil
,这是因为 [AnyObject]
不包含任何类型的信息?即使我将 [SKNode]
更改为 [NSString]
它仍然会转到 (1)?
if let children = node.children as? [SKNode] {
// (1) STUFF WITH SKNODE...
} else {
// (2) NOPE, ITS NOT AN SKNODE
最佳答案
node.children
不是可选的。它总是返回类型为 [AnyObject]
的数组。如果没有 child ,这个数组将有 0 个元素。如果有 child ,则此数组将包含 SKNode
。
可选的绑定(bind) if let children = node.children as? [SKNode]
将始终成功,因为空对象数组 [AnyObject]
可以转换为 [SKNode]
。
当我第一次看到 node.children
返回的是 [AnyObject]
而不是 [SKNode]
时,我觉得这很奇怪。然后我意识到这是一个与 Objective-C
一起工作的 Cocoa Touch
接口(interface),所以它不能返回 [SKNode]
即使这就是它包含的内容。
关于swift - 对 AnyObject 失望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26847020/
我有点不明白下面的代码是怎么回事。我的印象是 children 是一个可选的,基于 node.children(类型为 [AnyObject])是 [SKNode] 我看到的是 children 永远
我该如何解决这个问题?谢谢 这是一个 tableviewcell 错误,我不明白这个问题。请帮助我。我有一个像 ITableViewCell 的 Downcast 这样的错误?到 UITableVie
我是一名优秀的程序员,十分优秀!