gpt4 book ai didi

swift - Swift 4 中的 Smart KeyPaths 无法正常工作

转载 作者:行者123 更新时间:2023-11-28 06:13:03 28 4
gpt4 key购买 nike

我正在尝试为 SKSpriteNode 创建自定义操作 block ,我有以下代码:

let sprite = SKSpriteNode(color: SKColor.red, size: CGSize(width: 50, height: 50))
sprite.position = CGPoint(x: 320, y: 240)
self.addChild(sprite)

let animation = SKAction.customAction(withDuration: 0, actionBlock: {
(node, elapsedTime) in

var initialValue : CGFloat?
initialValue = node[keyPath: \SKSpriteNode.position.x] //Extraneous argument label 'keyPath:' in subscript

node[keyPath: \SKSpriteNode.position.x] = 10 //Ambiguous reference to member 'subscript'
})

sprite.run(animation)

我收到两个错误,第一个是编译器认为我有一个“keyPath”的无关参数,但事实并非如此,因为如果我按照它的建议删除它,我会收到此错误:

Cannot convert value of type 'ReferenceWritableKeyPath' to expected argument type 'String'

我得到的第二个错误是:

Ambiguous reference to member 'subscript'

我不确定为什么会收到所有这些错误,我也不确定这些错误的确切含义。如果有人可以向我解释它们并提出解决方案,那就太好了。提前致谢。

最佳答案

keyPath 无效,因为 node 的类型为 SKNode 而不是 SKSpriteNode。您可以使用条件转换来确定节点是 SKSpriteNode:

let animation = SKAction.customAction(withDuration: 0, actionBlock: {
(node, elapsedTime) in

var initialValue : CGFloat?
if let spritenode = node as? SKSpriteNode {
initialValue = spritenode[keyPath: \SKSpriteNode.position.x]

spritenode[keyPath: \SKSpriteNode.position.x] = 10
}
})

关于swift - Swift 4 中的 Smart KeyPaths 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45909769/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com