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

Как подключиться к сторонней структуре Swift

За последние 24 часа я попытался использовать две разные библиотеки Swift сторонних разработчиков: Swiftz и Sleipnir. Я предполагаю, что это должно быть довольно просто, поскольку оба проекта просто предоставляют эскиз того, как их потреблять. Тем не менее, ни один из них не дает достаточно подробностей для меня. Я пробовал все из следующего: добавьте проекты в мое рабочее пространство, перетащите скомпилированные фреймворки в свой навигатор по проекту, добавьте фреймворки в фазу "Link Binary with Libraries". Во всех случаях я получаю ошибку компоновщика, сообщающую мне, что фреймворк не найден.

Мне просто нужна ссылка на фактическую документацию, в которой объясняется, как это сделать. Я не смог его найти.

Изменить: Забудьте о сторонних библиотеках. Как вы используете собственные библиотеки? У меня есть библиотека Cocoa Framework, которую я написал. Теперь я добавил проект командной строки в ту же рабочую область. Конечно, было бы хорошо, если бы я мог получить доступ к моей новой структуре из моего приложения командной строки. Я нажал на мой проект командной строки. Нажав на "Сборка фаз", вы перетащили мою собственную структуру в раздел "Связывание двоичных файлов с библиотеками". Все прекрасно компилируется. При запуске моего приложения я получаю следующую ошибку:

dyld: Library not loaded: @rpath/libswiftAppKit.dylib
  Referenced from: /Users/mgwelch/Library/Developer/Xcode/DerivedData/SwiftParsing-
  btkaoklayoffujgrkklfyffpipih/Build/Products/Debug/Parsing.framework/Versions/A/
  Parsing
  Reason: image not foundI
4b9b3361

Ответ 1

Хорошо, я думаю, не многие пользователи знакомы с фреймворками Swift.

Ну, я получаю некоторую помощь от разработчика рамок по проблеме, которую я поднял о том, как использовать свою инфраструктуру. У меня все еще есть проблемы, но другие могут быть заинтересованы в следующем разговоре, чтобы увидеть некоторые из этих шагов.

https://github.com/typelift/swiftz/issues/114

Подробные инструкции приведены по этой проблеме. Не стесняйтесь попробовать их. Я буду отмечать это как закрытое.

UPDATE Я сказал это в комментарии, но это, возможно, не видно. Я пытался написать инструмент командной строки. В настоящее время с XCode 6.1 не представляется возможным использовать стороннюю структуру в инструменте командной строки. На самом деле я написал проблему против другого проекта, в котором указано, что цели их командной строки больше не выполняются: https://github.com/railsware/Sleipnir/issues/17

Возможно, это сработало в предыдущей бета-версии, но это уже не представляется возможным.

Ответ 2

Попробуйте проверить Runpath Search Paths в настройках сборки. Проверьте правильность относительного пути к директории Frameworks.

LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/../Frameworks @loader_path/Frameworks

Ответ 3

Ознакомьтесь со следующим документом (Внедренные структуры Swift в инструментах командной строки OS X), в нем описывается процесс, который работает для внедрения структур Swift в инструменты командной строки.

Это скорее работа, чем решение, но оно работает. В идеале, люди Apple должны поместить дружественный знак большими, жирными красными буквами при создании приложения командной строки в Swift, чтобы избежать траты времени на такие проблемы.

Я следил за процессом для Swift 1.1 и Swift 1.2 без каких-либо проблем. Единственное, что сложно сделать, чтобы заставить argv быстро, но вы можете сделать это в objective-c в main.m с помощью

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        NSMutableArray *paramArray = [[NSMutableArray alloc] init];
        for (int i=0; i<argc ;i++) {
            [paramArray addObject:[[NSString alloc] initWithUTF8String:argv[i]]];
        }
        return (int) [[Whatever sharedInstance]manage:argc param:paramArray];
    }
    return 0;
}