Xcode генерирует пакеты Swift для iOS - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать пакеты Swift, используя встроенные функции XCode 11, но у меня возникают проблемы. Я могу создать общий c Swift Package (без платформ) и Swift Package для Ma c (платформа .macos), но когда я пытаюсь создать их только для iOS, компилятор сообщает мне, что UIKit не может быть импортированным. Я вижу сообщение:

«UIKit недоступен при сборке для MacOS. Рассмотрите возможность использования '#if! Os (macOS)' для условного импорта этой структуры.»

Я использую XCode для генерировать этот пакет, а не создание пакета Swift из командной строки. Пакет не имеет связанного с ним файла проекта Xcode, это просто пакет. Если я помещаю условные компиляции вокруг кода iOS, проект будет успешно построен, потому что он пропускает часть iOS. Однако этот способ не показывает мне никаких ошибок компиляции, которые могут быть в коде!

Если я компилирую и публикую sh с условными макросами, я могу импортировать пакет Swift в iOS проект, и код компилируется. Однако отладка длится вечно, поскольку, если у меня есть ошибка компиляции в пакете, мне нужно отредактировать Package, commit, pu sh, update, а затем запустить его в проекте Ma c, чтобы проверить, правильно ли я понял. . Я хотел бы, чтобы пакет Swift правильно скомпилировал код, чтобы я мог исправить его там.

Помощь? Спасибо!

1 Ответ

0 голосов
/ 09 июля 2020

Вот пошаговые инструкции по созданию пакета Swift для iOS с использованием Xcode 11.5.

  1. Выберите «Файл»> «Создать»> «Пакет Swift».

  2. Примите имя по умолчанию MyLibrary и сохраните его на рабочем столе.

  3. В существующий файл MyLibrary.swift внутри Sources / MyLibrary добавьте импорт UIKit , и на всякий случай обратимся к классу UIKit. И давайте сделаем все publi c, чтобы оно выглядело так:

    import UIKit
    public struct MyLibrary {
        public init() {}
        public var view = UIView()
    }
    
  4. В MyLibraryTests.swift внутри Tests / MyLibraryTests удалите всю декларацию final class MyLibraryTests.

  5. В верхней части окна, где написано MyLibrary> My Ma c, измените My Ma c на Generi c iOS Device или любой iOS симулятор, который вы

  6. Сборка.

Теперь, чтобы доказать, что это работает, импортируйте пакет в проект iOS. Вы сможете import MyLibrary и создать объект MyLibrary() и получить его view.

Лично я не думаю, что это очень хороший способ разработки пакета для iOS; Я бы предпочел добавить пакет в существующий проект, чтобы там была тестовая площадка, на которой я действительно мог бы сразу запустить код. Тем не менее, это доказывает, что вы можете создать автономный пакет и скомпилировать его для iOS.

...