"Expected expression in Swift key path" Error while Refactoring code with Extensions
I got this error when I accidentally left a backslash after a bracket in my object init:
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()
}
Removing the backslash fixed the error. Check out this answer by user eharo2 for details about why!
Maybe you have typo, for example:
\//
// MyClass.swift
// yyy
//
// Created by xxx on 4/25/19.
// Copyright © 2019 xxx. All rights reserved.
//
import Foundation
class MyClass {
}
In this Case I accidentally wrote '\' at start.
This error message is a straight forward error, where the parser is expecting a keyPath
, given the usage of the backslash (assuming that this is the issue causing the problem, considering that the previous answer from @Edmund Holderbaum was accepted).
Excerpt From: Apple Inc. “The Swift Programming Language (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
There seems to be few places in the Swift grammar where a backslash is used, other than in string interpolation (interpolated-text-item) or in a escaping sequence (escape-sequence).
from Summary of the Grammar - Lexical Structure
“key-path-expression → \ type opt . key-path-components”
Take a look at this excellent post to learn more about keyPaths
in Swift: https://www.swiftbysundell.com/posts/the-power-of-key-paths-in-swift