Как ссылаться на enum из пакета swift с тем же именем, что и struct в проекте - PullRequest
0 голосов
/ 04 марта 2020

В моем проекте есть структура с именем Location. Мой проект использует быстрый пакет с именем LocationPackage, который определяет enum Location. Как я могу ссылаться на LocationPackage enum Location вместо структуры моего проекта?

В пакете LocationPackage у нас есть:

public enum Location: String {
    case location1
    case location2
}

В нашем проекте у нас есть:

struct Location {
    let name: String?
    let placeID: String?
    let coordinate: CLLocationCoordinate2D
}

Когда я пытаюсь использовать LocationPackage.Location, я получаю ошибку компилятора Location is not a member type of 'LocationPackage'.

Один из найденных мной обходных путей - добавление public typealias LocationPackageLocation = Location в пакет местоположений.

1 Ответ

0 голосов
/ 09 марта 2020

Если у вас есть конфликтующие имена в модулях Swift, тогда он предпочтет ваш текущий тип модулей с тем именем, если оно существует. Чтобы получить доступ к другим, вы всегда должны устранять неоднозначность, используя имя модуля. В этом случае это означает, что вам нужно использовать LocationPackage.Location для доступа к вашему Location перечислению.

...