"Expected expression in Swift key path" 使用扩展重构代码时出错

"Expected expression in Swift key path" Error while Refactoring code with Extensions

我一直在尝试重构代码,方法是感谢函数并将它们添加到 ViewController

的单独文件 extension

我在这个扩展中拥有的是一个函数,它将 gesture recognizers 添加到一些视图,这些视图引用了我放在相同 ViewController 的其他文件扩展名中的函数。在构建时我收到此错误 "Expected expression in Swift key path"

导致此错误的原因是什么?

当我不小心在对象初始化中的括号后留下反斜杠时出现此错误:

init(for note: Note, atAnchor anchor: ARAnchor) {\

    let billboardNode = note.type.basicNode

    self.node = billboardNode
    self.text = note.description ?? "[No Text]"
    self.type = note.type
    addText()
}

删除反斜杠修复了错误。请查看用户 eharo2 的 以了解有关原因的详细信息!

此错误消息是一个直接的错误,其中解析器期望 keyPath,因为使用了反斜杠(假设这是导致问题的原因,考虑到@之前的回答Edmund Holderbaum 被录取了)。

摘自:Apple Inc.“Swift 编程语言 (Swift 5.0)。”

Key-Path Expression. A key-path expression refers to a property or subscript of a type. You use key-path expressions in dynamic programming tasks, such as key-value observing. They have the following form:

\type name.path

除了字符串插值 (interpolated-text-item) 或转义序列 (escape-sequence) 之外,Swift 语法中似乎很少有地方使用反斜杠。

来自语法总结 - 词汇结构

“key-path-expression → \ type opt . key-path-components”

看看这个优秀的 post 以了解更多关于 Swift 中的 keyPaths 的信息:https://www.swiftbysundell.com/posts/the-power-of-key-paths-in-swift

可能是你打错了,例如:

\//
//  MyClass.swift
//  yyy
//
//  Created by xxx on 4/25/19.
//  Copyright © 2019 xxx. All rights reserved.
//

import Foundation

class MyClass {

}

在这种情况下,我不小心在开头写了“\”。