Импорт игровых площадок: нет такого модуля "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]()
Ответы
Ответ 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!")
}
}
![введите описание изображения здесь]()
Игровая площадка не должна иметь то же имя, что и проект.
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
Сборка фреймворка с выпуском, у меня это сработало. (Xcode 10.1, swift 4.2)
Ответ 8
Решение, которое сработало для меня:
-
Настройте свое рабочее пространство и проект/структуру.
- Удалить производные данные (Как удалить производные данные?)
- НЕ СОБИРАЙТЕ СВОЙ ПРОЕКТ
- Создайте файл игровой площадки с другим именем, отличным от имени вашего проекта/цели/фреймворка, в папке с файлами Swift или там, где находится файл .xcodeproj (не имеет значения, какой вы выбрали)
- Создайте свой проект под нужной платформой (если площадка предназначена для macOS, то создайте проект с целью macOS и т.д.)
- Когда сборка завершится, попробуйте добавить код на игровую площадку и запустить его.
P.S. вам может потребоваться перезапустить Xcode до 6-го шага.
Ответ 9
Если импорт сторонних модулей работает раньше, и он не работает внезапно. Вы можете попробовать следующие шаги, чтобы проверить, можете ли вы его восстановить или нет. Моя игровая площадка смогла импортировать 3-й модуль раньше, но неожиданно сообщила об ошибке "Нет такого модуля...". Я исправил его, используя небольшой трюк.
В вашем случае игровая площадка застряла в заявлении "import Foo".
Вы можете удалить все операторы импорта и подождать несколько секунд, а затем снова добавить инструкции импорта. Игровая площадка должна иметь возможность снова импортировать модули сторонних разработчиков.