Подтвердить что ты не робот

Импорт игровых площадок: нет такого модуля "Foo"

Я старательно следовал инструкциям Apple, чтобы импортировать пользовательский модуль на игровую площадку, включая инструкции здесь. И все же я получаю:

Не удалось выполнить игровую площадку: /var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.swift:7:8: ошибка: нет такого модуля 'Foo', импортировать Foo

Как восстановить импорт рабочей площадки? [Изменение: Обратите внимание, два ответа дали подробные инструкции, чтобы связать игровую площадку с рамкой; Я следовал этим инструкциям, но не повезло. Решение должно будет включать перенастройку чего-либо в Xcode; моя установка явно сломана ]

Подробные изображения ошибок и попыток: enter image description here

Вот еще одна попытка, основанная на ответе @EricD, показывающая структуру каталогов, без кубиков. enter image description here

4b9b3361

Ответ 1

Решение, от Apple Support, должно было настроить мои настройки Xcode. В локациях:: Дополнительно моя конфигурация была "Наследие". Перейдя на "Уникальный" и отменив любые пути, которые я попытался вставить, игровые площадки могут теперь импортировать фреймворки.

Ответ 2

Для некоторых из них, что ни одно из вышеперечисленных решений не работает (и что путь пути построения Xcode уже установлен на Unique), я нашел решение.

Структура должна быть построена со схемой для iOS-симулятора (любой из списка) и НЕ a Generic iOS Device, так как Playgrounds не поддерживают его. Это работало для меня:

Рабочая схема

Ответ 3

Вот как я перехожу к OS X с Xcode 7.1:

  • Создайте новый проект: OS X Cocoa Framework, Swift. В этом примере я назвал его "TestPlaygroundFMK".

  • Создайте новый файл Swift.

  • Добавьте класс в файл. Код должен быть общедоступным. Я сделал это для нашего примера:

import Foundation

public class Talk {
    public class func sayHello() {
        print("Hello from framework!")
    }
}
  • Создайте проект сейчас.

  • В строке меню нажмите "Файл" > "Сохранить как рабочее пространство".

  • Создайте новую игровую площадку и сохраните ее в папке проекта рядом с файлами Swift.

введите описание изображения здесь

Игровая площадка не должна иметь то же имя, что и проект.

  • Снова создайте проект.

  • Импортируйте свою фреймворк на игровой площадке и используйте ее:

import TestPlaygroundFMK

Talk.sayHello()

введите описание изображения здесь

Ответ 4

  • Создайте рабочее пространство, как показано ниже:

    • Выберите "Файл" > "Создать" > "Рабочая область"
    • Введите имя рабочей области и укажите ее расположение в вашей файловой системе
    • Нажмите "Сохранить"
  • Теперь создайте структуру Cocoa с быстрым файлом, у которого есть класс

    • Выберите "Файл" > "Создать" > "Проект"
    • Выберите Cocoa framework > Далее
    • Введите имя и язык продуктa > Далее
    • Перед нажатием кнопки create в списке "Добавить в:" и "Группа" выберите "Ваше имя рабочей области", как показано Добавить в рабочее пространство
    • Рамка добавлена ​​в рабочую область
  • Создайте быстрый файл в своей структуре
    • В Xcode щелкните правой кнопкой мыши папку, в которую вы хотите добавить swift файл, и выберите новый файл...
    • Выберите swift > Далее > Назовите свой файл > Создать
  • Выберите фреймворк в Xcode → Создайте фреймворк
  • Создание игровой площадки → Игровая площадка также должна быть частью вашего рабочего пространства, если не перетащить ее в рабочее пространство, она будет добавлена ​​автоматически.
    • Щелкните правой кнопкой мыши в разделе Файлы Xcode > Новый файл... > Игровая площадка
    • import
    • Вызовите свой метод

Примечание. Если вы просто хотели добавить классы вместо фреймворка на свою игровую площадку, проверьте ссылку Как импортировать мой собственный класс в игровую площадку Xcode 7?

Ответ 5

У меня была хорошая игровая площадка, но я обнаружил, что когда я выйду из Xcode и снова открою его, я получу ошибку, подобную этой:

ошибка: /var/folders/ft/bmk8wh6s5ms4my2pxhn3qbp40000gn/T/playground1-9216e0..swift:3:8: ошибка: нет такого модуля 'Playground_Sources' import Playground_Sources

... где "Детская площадка" - это имя файла моей детской площадки.

Решение этого (в Xcode 9.0) состоит в том, чтобы:

  • щелкните любой файл игровой площадки в вашем рабочем пространстве
  • показать панель Utilities (opt - cmd - 0)
  • в разделе "Настройки игровой площадки" измените "Платформу" на что-нибудь другое, затем установите его обратно.

В моем случае это установлено в macOS. Я изменил его на iOS затем обратно на macOS (перекомпиляция не требуется), и он начал работать нормально... пока я не закрою Xcode и снова не открою его.

Это единственное решение, которое я нашел для работы с площадками macOS. Эта ошибка все еще существует в Xcode 9.3.

Ответ 6

Я не думаю, что говорить о том, что Xcode - это нечто вроде черного ящика Я не утверждаю, что это будет работать для кого-то еще, но для меня, после возникновения той же проблемы после создания новой игровой площадки и нового целевого фреймворка, и всех других предлагаемых решений, что в итоге сработало, удалив файл рабочей области и (в мой случай) регенерируй его при помощи кокоапод.

Я понятия не имею, почему это сработало.

Ответ 7

enter image description here Сборка фреймворка с выпуском, у меня это сработало. (Xcode 10.1, swift 4.2)

Ответ 8

Решение, которое сработало для меня:

  1. Настройте свое рабочее пространство и проект/структуру.
  2. Удалить производные данные (Как удалить производные данные?)
  3. НЕ СОБИРАЙТЕ СВОЙ ПРОЕКТ
  4. Создайте файл игровой площадки с другим именем, отличным от имени вашего проекта/цели/фреймворка, в папке с файлами Swift или там, где находится файл .xcodeproj (не имеет значения, какой вы выбрали)
  5. Создайте свой проект под нужной платформой (если площадка предназначена для macOS, то создайте проект с целью macOS и т.д.)
  6. Когда сборка завершится, попробуйте добавить код на игровую площадку и запустить его.

P.S. вам может потребоваться перезапустить Xcode до 6-го шага.

Ответ 9

Если импорт сторонних модулей работает раньше, и он не работает внезапно. Вы можете попробовать следующие шаги, чтобы проверить, можете ли вы его восстановить или нет. Моя игровая площадка смогла импортировать 3-й модуль раньше, но неожиданно сообщила об ошибке "Нет такого модуля...". Я исправил его, используя небольшой трюк.

В вашем случае игровая площадка застряла в заявлении "import Foo". Вы можете удалить все операторы импорта и подождать несколько секунд, а затем снова добавить инструкции импорта. Игровая площадка должна иметь возможность снова импортировать модули сторонних разработчиков.