«Ожидаемое выражение в пути ключа Swift» Ошибка при рефакторинге кода с расширениями - PullRequest
0 голосов
/ 23 октября 2018

Я пробовал код рефакторинга, поблагодарив функции и добавив их в отдельный файл extension из ViewController

В этом расширении есть функция, которая добавляет gesture recognizers к некоторым представлениямкоторые имеют ссылки на функции, которые я поместил в другое расширение файла того же ViewController.При сборке я получаю эту ошибку «Ожидаемое выражение в пути ключа Swift»

Что вызывает эту ошибку?

Ответы [ 3 ]

0 голосов
/ 23 апреля 2019

Это сообщение об ошибке является прямой ошибкой, когда анализатор ожидает keyPath, учитывая использование обратной косой черты (при условии, что это проблема, вызывающая проблему, учитывая, что был принят предыдущий ответ от @Edmund Holderbaum).

Выдержка из: Apple Inc. «Язык программирования Swift (Swift 5.0)».

Выражение ключевого пути. Выражение key-path относится к свойству или нижнему индексу типа.Вы используете выражения пути ключа в задачах динамического программирования, таких как наблюдение значения ключа.Они имеют следующую форму:

\ type name.path

Кажется, в грамматике Swift мало мест, где используется обратный слеш, кроме как при интерполяции строк (interpolated-text-item) или в выходящей последовательности (escape-последовательность).

из Краткое изложение грамматики - лексическая структура

«выражение-ключ-путь → \ type opt.key-path-components ”

Взгляните на этот замечательный пост, чтобы узнать больше о keyPaths в Swift: https://www.swiftbysundell.com/posts/the-power-of-key-paths-in-swift

0 голосов
/ 25 апреля 2019

Может быть, у вас есть опечатка, например:

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

import Foundation

class MyClass {

}

В этом случае я случайно написал «\» при запуске.

0 голосов
/ 28 декабря 2018

Я получил эту ошибку, когда случайно оставил обратную косую черту после скобки в моем объекте 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()
}

Удаление обратной косой черты устранило ошибку.Посмотрите этот ответ пользователя eharo2, чтобы узнать, почему!

...