@Cassar

Почему Swift не дружит со ScriptingBridge.framework?

Есть необходимость в Swift-приложении коммуницировать с iTunes. Естественно, для этих целей был выбран ScriptingBridge.framework. Был сгенерирован хедер iTunes.h c помощью
sdef /Applications/iTunes.app | sdp -fh --basename iTunes
и добавлен в проект вместе с Имя_Приложения-Bridging-Header.h со строкой #import "iTunes.h". Также в проект был залинкован сам ScriptingBridge.framework. Однако, когда дело дошло до непосредственного взаимодействия, например, получения экземпляра iTunes и чтения его свойств -- текущего трека, к примеру:
class iTunesWorker: NSObject {
    var iTunesInstance: iTunesApplication? = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes") as? iTunesApplication

    func fetchCurrentTrackInfo() {
        let currentTrack: iTunesTrack? = iTunesApp?.currentTrack
        let trackName: String? = currentTrack?.name
        println(trackName)
    }
}

приложение отказалось собираться с ошибкой типа
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_iTunesApplication", referenced from:
__TFC5NowP_14iTunesWorker21fetchCurrentTrackInfofS0_FT_T_ in iTunesWorker.o
__TFC5NowP_14iTunesWorkercfMS0_FT_S0_ in iTunesWorker.o
_get_field_types_iTunesWorker in iTunesWorker.o
"_OBJC_CLASS_$_iTunesTrack", referenced from:
__TFC5NowP_14iTunesWorker21fetchCurrentTrackInfofS0_FT_T_ in iTunesWorker.o
ld: symbol(s) not found for architecture x86_64


Рыскание по интернетам не дало сколь-либо внятных вариантов решения данной проблемы.
  • Вопрос задан
  • 2481 просмотр
Решения вопроса 1
deleted-mezhevikin
@deleted-mezhevikin
Он много с чем не дружит, например есть проблемы с coredata.framework. Думаю не стоит спешить и подождать сентября с официальным релизом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TAURUSiv43
@TAURUSiv43
Если еще актуально, то можно сделать следующим образом - описать взаимодействие с айтюнс в Obj-C классе и дальше его уже юзать из свифта. Проверил, так работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы