当阿拉伯字符串在其数据中时,不会生成目标c qr代码

问题描述 投票:0回答:1

我的应用程序必须生成一个qr代码,我成功使用此块实现

NSString *info = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@", [_sighting valueForKey:@"Sighting_id"], [_sighting valueForKey:@"Name"], [_sighting valueForKey:@"Type"], [_sighting valueForKey:@"Distance"], [_sighting valueForKey:@"Loc"], session.userId];
NSLog(@"%@", info);
NSData *qrCodeData = [info dataUsingEncoding:NSISOLatin1StringEncoding];
CIFilter *qrCodeFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrCodeFilter setValue:qrCodeData forKey:@"inputMessage"];
[qrCodeFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
CIImage *qrCodeImage = qrCodeFilter.outputImage;
CGRect imageSize = CGRectIntegral(qrCodeImage.extent); 
CGSize outputSize = CGSizeMake(240.0, 240.0);
CIImage *imageByTransform = [qrCodeImage imageByApplyingTransform:CGAffineTransformMakeScale(outputSize.width/CGRectGetWidth(imageSize), outputSize.height/CGRectGetHeight(imageSize))];
UIImage *qrCodeImageByTransform = [UIImage imageWithCIImage:imageByTransform];
self.qrimage.image = qrCodeImageByTransform;

[_sighting valueForKey:@“Name”],这是包含阿拉伯字符串的代码,一旦使用,则qr代码将不会显示,不会发生崩溃或任何失败的迹象。

objective-c xcode qr-code arabic generate
1个回答
0
投票
NSString *info = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@", [_sighting valueForKey:@"Sighting_id"], [_sighting valueForKey:@"Name"], [_sighting valueForKey:@"Type"], [_sighting valueForKey:@"Distance"], [_sighting valueForKey:@"Loc"], session.userId];

NSData *stringData = [info dataUsingEncoding: NSUTF8StringEncoding];

CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];

CIImage *qrImagenew = qrFilter.outputImage;
float scaleX = self.qrimage.frame.size.width / qrImagenew.extent.size.width;
float scaleY = self.qrimage.frame.size.height / qrImagenew.extent.size.height;

qrImagenew = [qrImagenew imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)];

self.qrimage.image = [UIImage imageWithCIImage:qrImagenew
                                             scale:[UIScreen mainScreen].scale
                                       orientation:UIImageOrientationUp];

如果有人遇到同样的问题,这段代码对我有用,我从stackoverflow上的qr线程的答案引用它,但它被投了一两次所以我没有注意到它。

© www.soinside.com 2019 - 2024. All rights reserved.