2016-03-21 2 views
1

Я пытаюсь разобрать файлы PDF, и я почти получил код. Единственное, что я не могу понять, это перевести следующий код Objective C в Swift. Мне нужно вызвать мою собственную письменную функцию, чтобы зарегистрировать ее как обратный вызов.Как настроить CGPDFOperatorTableSetCallback в SWIFT (не Objective C)

код Objective-C является:

CGPDFOperatorTableSetCallback(operatorTable, "q", &op_q); 

и функция

static void op_q(CGPDFScannerRef s, void *info) { 
    // Do whatever you have to do in here 
    // info is whatever you passed to CGPDFScannerCreate 
} 

Что бы эквиваленты Swift быть?

ответ

0

Вам не нужно создавать свою собственную функцию op_q для использования в качестве указателя функции, если вы этого не хотите. Используйте Свифт закрытия синтаксис:

CGPDFOperatorTableSetCallback(operatorTable, ("q" as NSString).UTF8String) { (s, info) -> Void in 
    // ... 
} 

Здесь ("q" as NSString).UTF8String дает вам UsafePointer<Int8>, который действует как const char * мостика Свифт из C.

Если вы хотите использовать указатель на функцию, она может выглядеть следующим образом:

func op_q(s: CGPDFScannerRef, _ info: UnsafeMutablePointer<Void>) { 
    // ... 
} 
+0

это не работает. –

+0

@cenkebret Можете ли вы подробнее рассказать о том, что не работает? Является ли обратная связь даже не входящей в закрытие? Возможно, задайте новый вопрос и перейдите сюда, чтобы предоставить контекст. – JAL

+0

вводит, но информация param всегда nil –