我是一个Ios的新手。我正在学习Swift,忽略了Objective-C。
目前,我正在使用Swift和Xcode 6.1编写演示文稿,可以从相机扫描二维码和条形码,或从图像库中选择图像。
我知道AVFoundation框架支持扫描二维码和条形码,但它只能从相机扫描。
我搜索并找到了zbarSDK,它支持从相机和图像扫描代码。我按照http://zbar.sourceforge.net/iphone/sdkdoc/和NSFastEnumeration in Swift(将代码转换为Swift)中的说明操作。然而,当我运行应用程序并从库中选择图像后,会出现错误。
这是我的代码。
目前,我正在使用Swift和Xcode 6.1编写演示文稿,可以从相机扫描二维码和条形码,或从图像库中选择图像。
我知道AVFoundation框架支持扫描二维码和条形码,但它只能从相机扫描。
我搜索并找到了zbarSDK,它支持从相机和图像扫描代码。我按照http://zbar.sourceforge.net/iphone/sdkdoc/和NSFastEnumeration in Swift(将代码转换为Swift)中的说明操作。然而,当我运行应用程序并从库中选择图像后,会出现错误。
这是我的代码。
import UIKit
import AVFoundation
extension ZBarSymbolSet: SequenceType {
public func generate() -> NSFastGenerator {
return NSFastGenerator(self)
}
}
class FirstViewController: UIViewController, ZBarReaderDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
let reader = ZBarReaderController()
@IBOutlet weak var lblResult: UILabel!
@IBOutlet weak var imgView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
reader.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func scanCode(sender: AnyObject) {
let scanner = reader.scanner
scanner.setSymbology(ZBAR_I25, config: ZBAR_CFG_ENABLE, to: 0)
reader.modalPresentationStyle = .Popover
presentViewController(reader, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
var results: NSFastEnumeration = info["ZBarReaderControllerResults"] as NSFastEnumeration
var symbolFound : ZBarSymbol?
// =============== Error here ==================
for symbol in results as ZBarSymbolSet {
symbolFound = symbol as? ZBarSymbol
break
}
var resultString = NSString(string: symbolFound!.data)
println(resultString)
}
}
这里有一个错误图片
如果有人能告诉我为什么会出现错误以及如何修复它,或者是否有一种方法可以使用AVFoundation扫描图像代码,或者是否有其他库(具有详细的文档和示例)来完成此操作(请提供详细说明,因为我只学习了3周的Swift和iOS)。 谢谢。