我正在尝试使用http://github.com/TheLevelUp/ZXingObjC在我的Mac应用中创建QR码。
适用于所有条形码类型,但在QRcode上返回nil! '结果'和'错误'都是空的。这是我的代码:
NSError* error = nil;
ZXMultiFormatWriter* writer = [[ZXMultiFormatWriter alloc] init];
ZXBitMatrix* result = [writer encode:@"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678"
format:kBarcodeFormatQRCode
width:1750
height:1750 hints:[[ZXEncodeHints alloc] init] error:&error];
if (result) {
CGImageRef image = [[ZXImage imageWithMatrix:result] cgimage];
self.image.image = [[NSImage alloc] initWithCGImage:image size:NSMakeSize(1750, 1750)];
} else {
NSLog(@"error: %@", error);
}
它出了什么问题?
答案 0 :(得分:4)
我有同样的问题。这是解决方法。
打开文件ZXingObjC\qrcode\encoder\ZXEncoder.m
找到这一行:int minPenalty = NSIntegerMax;
。必须有警告:从'long'到'int'的隐式转换将9223372036854775807更改为-1 。这就是问题的原因。 NSIntegerMax
在我的64位Mac上返回9223372036854775807
,minPenalty
获得-1
值(因为int
类型无法存储如此大的数字)。
将NSIntegerMax
替换为INT_MAX
。它应该返回正确的值:2147483647
。根据{{3}}的答案,这是32位计算机上的NSIntegerMax
次返回。
运行该应用,您将获得您的二维码!
答案 1 :(得分:0)
尝试使用另一种方法,而不是使用HINTS,只使用:
[writer encode:@"yourmeganumber" format:kBarcodeFormatQRCode width:xxxx height:xxxx error:&error];
这对我有用
试试让我知道