Импортировать мой собственный класс Swift в Playground

Я видел несколько разных сообщений на эту тему, но, похоже, ни одна из них не решает основную проблему. В моем проекте есть следующее:

Hi Class У меня Hi Class с методом, показанным ниже.

func sayHi(){
    println("hi")

}

Детская площадка. У меня есть детская площадка, на которой я пытаюсь импортировать свой Hi Class.

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

Вот ответы с форумов stack / apple, которые кажутся наиболее актуальными

Теперь можно импортировать свои собственные фреймворки на игровую площадку. Это дает возможность обмениваться кодом между вашими приложениями и игровыми площадками, которые могут импортировать ваши фреймворки. Для этого ваша игровая площадка должна находиться в той же рабочей области, что и проект, который создает ваш фреймворк. Вы, должно быть, уже создали свой фреймворк. Если это платформа iOS, она должна быть создана для 64-разрядной целевой системы (например, iPhone 5s). У вас должна быть активная схема, которая создает хотя бы одну цель (расположение сборки этой цели будет использоваться в пути поиска фреймворка для игровой площадки). Ваше предпочтение «Место сборки» (в расширенных настройках «Местоположения») не должно быть установлено на «Устаревшее». Если ваш фреймворк не является фреймворком Swift, для параметра сборки «Определяет модуль» должно быть установлено значение «Да». Как только все эти условия будут выполнены, импорт вашего фреймворка будет работать на игровой площадке.

Источник: Как импортировать сторонние файлы frameworks в Xcode Playground?

Может ли кто-нибудь указать мне шаг за шагом, как это сделать?


person mday    schedule 04.10.2014    source источник
comment
связанный ответ здесь: stackoverflow.com/questions/24046160/   -  person Steve Rosenberg    schedule 04.10.2014
comment
stackoverflow.com/questions/24045245/   -  person nroose    schedule 10.11.2014
comment
Некоторое время назад я тоже задавался этим вопросом, нашел ответ (ы), заставил его работать и пришел к выводу, что польза вряд ли стоит затраченных усилий. Слишком много условий, которым нужно соответствовать, чтобы она работала, а игровая площадка все еще работает неустойчиво. Если мне нужно проверить, как работает код моего приложения, я использую test-framework, если я хочу протестировать какую-то идею или концепцию, я использую игровую площадку.   -  person 0x416e746f6e    schedule 17.03.2015
comment
Вы также можете ознакомиться с обновлениями, опубликованными в блоге Apple Swift всего несколько дней назад. developer.apple.com/swift/blog/?id=26   -  person Kilian    schedule 23.03.2015


Ответы (2)


В Xcode 7 есть папка «Источники» в навигаторе Cmd 1, которая импортирует любой быстрый код локально на вашу игровую площадку.

детская площадка

Помните, что вам нужно пометить классы и функции в Источниках как общедоступные.

person Lachezar    schedule 04.01.2016
comment
Пометить классы и функции как общедоступные Идеально - person arsenius; 04.01.2017
comment
Даже если я помечу свою функцию как общедоступную, как показано на изображении, когда я вернусь в файл MyPlayground, я не смогу использовать свою функцию. Должен ли я импортировать быстрый файл на свою игровую площадку? - person Citizen_5; 26.05.2020
comment
Есть ли у вас ошибки компилятора Swift в файле, в котором находится ваша функция? Я говорю это, потому что у меня только что была упомянута проблема, и все мои функции были отмечены как общедоступные. После того, как я исправил ошибки в файле, я смог без проблем импортировать. - person Henrique Gouveia; 26.07.2021
comment
Кроме того, я только что заметил, что оператор fileprivate в одной из моих переменных не позволяет распознать остальную часть файла. - person Henrique Gouveia; 26.07.2021

Прошло более трех лет, и я очень надеюсь, что вы смогли это понять. В любом случае, вот ответ для всех, кто сталкивается с той же проблемой.

Исходный код в папке Sources импортируется автоматически. Просто убедитесь, что ваш класс и методы помечены как public. И у вашего класса есть общедоступный init метод.

См. Снимок экрана ниже.

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

person williamukoh    schedule 24.08.2018
comment
Что, если я хочу иметь возможность импортировать один и тот же модуль в несколько игровых площадок / проектов, не копируя и вставляя его в исходную папку каждой из них? Есть ли какое-то глобальное место, где я могу хранить все свои файлы? - person Peter Schorn; 18.03.2020
comment
@PeterSchorn Вы смогли придумать ответ на свой вопрос? Я пытаюсь сделать то же самое - person apunn; 17.07.2020
comment
Я обнаружил, что игровые площадки не поддерживают удаленные пакеты. Детская площадка - это полностью автономная папка. Лучше всего вместо этого создать проект командной строки macOS. - person Peter Schorn; 17.07.2020
comment
@apunn Тем не менее, я создал небольшое приложение, которое будет клонировать удаленный репозиторий и перемещать его в папку источников на игровой площадке. Если сам репозиторий имеет другие зависимости, вам также придется вручную добавить их. - person Peter Schorn; 18.07.2020