Добавление зависимости с помощью Swift Package Manager - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь добавить Socket.IO в мой проект Xcode.Я новичок в Swift Package Manager ( Где сейчас дни, когда мы могли бы просто отбросить код в нашем проекте )

Я создал файл Package.swift, содержащий следующее, как описано здесь

import PackageDescription

    let package = Package(
        name: "socket.io-test",
        products: [
            .executable(name: "socket.io-test", targets: ["MyTarget"])
        ],
        dependencies: [
            .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMinor(from: "14.0.0"))
        ],
        targets: [
            .target(name: "MyTarget", dependencies: ["SocketIO"], path: "./My/Target/Path/")
        ]
    )

Затем я открыл свой терминал и перешел к своей папке, содержащей мой проект и мой файл Package.swift.(Я предполагаю, что это должно быть в папке моего проекта)

Затем я выполнил следующую команду:

swift package resolve

Это привело к следующей ошибке:

error: манифест ошибки синтаксического анализа: ошибка: аргумент «цели» должен предшествовать цели аргумента «зависимости»: [~~~~ ^ ~~~~~~~~~

Итак, следуяПо инструкции, указанной в ошибке, я переместил свои «цели» выше зависимостей.

Я снова выполнил команду и получил следующую ошибку:

error: явная ошибка синтаксического анализа (s)): ошибка: неверная метка аргумента в вызове (есть 'имя: продукты: цели: зависимости:', ожидаемое 'имя: pkgConfig: цели: зависимости:') let package = Package (^

, посколькуисходный пример, взятый со страницы github, не имел такой настройки ярлыков, я просто менял свой код на следующий, каждый раз пытаясь добавить то, что предложил менеджер пакетов (добавление одного аргумента к другому, добавление дополнительных аргументов):

import PackageDescription

let package = Package(
    name: "socket.io-test",
    pkgConfig: nil,
    providers: nil,
    targets: [
        .target(name: "MyTarget", dependencies: ["SocketIO"], path: "./My/Target/Path/")
    ],
    dependencies: [
        .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMinor(from: "14.0.0"))
    ],
    swiftLanguageVersions: nil,
    exclude: nil,
    products: [
        .executable(name: "socket.io-test", targets: ["MyTarget"])
    ]
)

Однако сейчасменеджер пакетов сообщает мне следующую странную ошибку:

ошибка: явные ошибки анализа: ошибка: дополнительный аргумент 'products' в продуктах вызова: [^

Так что теперь я сдаюсь, поскольку я явно никуда не денусь.Как аргумент «продукты» не может принадлежать здесь?И почему ничего, предложенное менеджером пакетов, не работает?Я уверен, что мне не хватает чего-то маленького.Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?

Я также обратился за помощью к следующим веб-сайтам, но все еще не могу заставить мой работать.

Swift.org https://medium.com/xcblog/apple-swift-package-manager-a-deep-dive-ebe6909a5284

Надеюсьмой вопрос не слишком длинный, и что кто-то найдет время, чтобы помочь :)

РЕДАКТИРОВАТЬ

Я изменил код на следующее:

import PackageDescription

let package = Package(
    name: "socket.io-test",
    dependencies: [
    .Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 14)
    ]
)

И это, похоже, сработало без ошибок.Он поместил файл Package.resolved в папку моего проекта.Я не могу найти ссылку на этот файл, и я все еще теряюсь в связи с использованием Socket.IO в моем проекте.

EDIT 2

Я продолжил использоватьКарфаген для импорта рамок.Получил настройку за 15 минут.Поскольку это другое решение, не относящееся к моему вопросу, я решил добавить его как редактирование, а не как ответ.

Если кто-то все еще может ответить на вышеизложенное, пожалуйста, не стесняйтесь для использования в будущем, и я все равно протестирую его и приму, если он работает.

1 Ответ

0 голосов
/ 15 февраля 2019

Вам нужно добавить эту строку в начало вашего Package.swift

// swift-tools-version:4.2
...