Как импортировать фреймворк Zbar в Swift Project


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

- (IBAction)scanButton:(id)sender {

    // ADD: present a barcode reader that scans from the camera feed
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.supportedOrientationsMask = ZBarOrientationMaskAll;

    ZBarImageScanner *scanner = reader.scanner;
    // TODO: (optional) additional reader configuration here

    // EXAMPLE: disable rarely used I2/5 to improve performance
    [scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];

    // present and release the controller
    [self presentViewController:reader animated:YES completion:nil];}

Примечание: Что я делал до сих пор

  1. скопируйте фреймворк в swift
  2. Добавлен путь фреймворка к поисковым путям заголовка (раздел Targets > Build Settings)

    • $(PROJECT_DIR) / Test/ZBarSDK / Headers / ZBarSDK
    • создано Имя Проекта-Мост-Заголовок.h для наведения мостов (добавлены все файлы h из zbar)
    • Добавлен Заголовок Projectname-Bridging.h to Header пути поиска

После этого либо если я пишу "import ZBarSDK", либо ZBarReaderDelegate все равно выдает мне ошибку!

3 3

3 ответа:

Для Swift 3:

extension ZBarSymbolSet: Sequence {
    public func makeIterator() -> NSFastEnumerationIterator {
        return NSFastEnumerationIterator(self)
    }
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        // ADD: get the decode results
        let results: NSFastEnumeration = info[ZBarReaderControllerResults] as! NSFastEnumeration

        var symbolFound : ZBarSymbol?

        for symbol in results as! ZBarSymbolSet {
            symbolFound = symbol as? ZBarSymbol
            break
        }
        let resultString = symbolFound!.data
        print(resultString)
    }

Вот решение

Следующая ссылка помогла мне https://stackoverflow.com/a/24005242/4059179

Но после этого у меня была проблема NSEnumeration, так что вот второе решение проблемы

func imagePickerController(picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [NSObject : AnyObject]){
var results: NSFastEnumeration = info[ZBarReaderControllerResults] as NSFastEnumeration
} 

Не забудьте расширить

extension ZBarSymbolSet: SequenceType { public func generate() -> NSFastGenerator { return NSFastGenerator(self) } 
}

У меня есть этот проект

Использование cocoapods для импорта ZBarSDK в проект Swift 2.0.