Rod*_*eno 2 base64 qr-code ios swift
就那么简单.
我正在制作一个用户必须扫描QR码的应用程序(基本上是一个base64编码的字符串),有没有办法在解码之前验证字符串是否在base64中编码并遵循应用程序的流程?
我的代码将负责:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
if metadataObjects == nil || metadataObjects.count == 0 {
qrCodeFrameView?.frame = CGRectZero
return
}
let metadataObj = metadataObjects[0] as AVMetadataMachineReadableCodeObject
if metadataObj.type == AVMetadataObjectTypeQRCode {
let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj as AVMetadataMachineReadableCodeObject) as AVMetadataMachineReadableCodeObject
qrCodeFrameView?.frame = barCodeObject.bounds
if metadataObj.stringValue != nil /* Verify that string is base 64 before continue */ {
let decodedData = NSData(base64EncodedString: metadataObj.stringValue, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding)
println(decodedString)
}
/* More code */
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*n R 11
如果字符串包含有效的Base-64,则无需提前检查.您只需检查返回值,即nil输入未被识别为有效Base-64时:
if let decodedData = NSData(base64EncodedString: someString, options: nil) {
// ...
} else {
println("Not Base64")
}
Run Code Online (Sandbox Code Playgroud)
Swift 4的更新:
if let decodedData = Data(base64Encoded: someString) {
// ...
} else {
print("Not Base64")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |