2015-04-01 5 views
0

Я только что попытался импортировать библиотеку Objective-C с именем DDHotKey в проект Swift, и в некоторых случаях это не работает.Невозможно использовать библиотеку Objective-C в проекте Swift

Вот шаги, которые я сделал:

  • Скачать хранилище "DDHotKey"
  • Щелкните правой кнопкой мыши на проекте -> "Добавить файлы в% project_name%" -> Выбрать «DDHotKey-мастер "с флажком« Копировать элементы в случае необходимости »и« Создать ссылки на папки ».
  • Согласно документации Apple, тогда должно появиться приглашение о заголовочном заголовке, но оно не было: файлы просто скопированы в каталог проекта
  • Я попытался добавить заголовок заголовка к p roject вручную (File -> New -> Source -> Header file) с именем «bridge.h», установите его в настройках проекта (Параметры сборки -> Swift Compiler - Генерация кода -> Objective-C Bridging Header -> " bridge.h ") и поставьте в следующем файле:

.

#ifndef project_name_bridge_h 
#define project_name_bridge_h 

#import "DDHotKey-master/DDHotKeyCenter.h" 

#endif 

Теперь он собирает следующий код:

var hotKeyCenter = DDHotKeyCenter.sharedHotKeyCenter() 

Но когда я попытался вызвать метод этого объекта я получил сообщение об ошибке:

hotKeyCenter.registerHotKeyWithKeyCode(34, modifierFlags: 0, task: (NSEvent) { 
    println("str") 
}) 

Missing argument for parameter 'action' in call

хотя это два метода, и я использую разные:

- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags target:(id)target action:(SEL)action object:(id)object; 

- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task; 

Почему? Что я делаю не так? Как я могу это исправить?

Заранее благодарен.

ответ

1

Неправильный синтаксис закрытия. Я думаю, что вы имеете в виду следующее:

hotKeyCenter.registerHotKeyWithKeyCode(34, modifierFlags: 0, task: { _ in 
    println("str") 
}) 

_ in может оказаться ненужным, если определение типа может понять вещи, но я подозреваю, что вам это нужно. Однако ведущий (NSEvent) не является правильным синтаксисом Swift.

+0

Ах, извините, спасибо большое. К сожалению, он не связан сейчас - по какой-то причине он не видит таких символов, как DDHotKeyCenter, и дает мне ошибку «Неопределенные символы для архитектуры x86_64:« _OBJC_CLASS _ $ _ DDHotKeyCenter ». Что может быть причиной такого поведения? – FrozenHeart

+0

Это несвязанная проблема. Вы почти не связываете DDHotKeyCenter. Если вы считаете, что это так, опишите ситуацию в новом вопросе (хотя поиск SO для привязки objc к swift, вероятно, поможет вам). –