以下是Zbar SDK中的代码,它允许您扫描条形码。读取条形码后,条形码编号将显示在界面上的textView框中。您在哪里看到resultText.text = symbol.data是条形码解码信息的位置,并允许条形码显示在textView框中。所以基本上因为无论条形码解码放在resultText.text中,我都添加了“if”条件:
if ([symbol.data = 04176400]) {
resultText.text = @"This is a sprite bottle";
}
精灵瓶上的条形码是04176400.所以我希望文本“这是一个精灵瓶”显示而不是04176400,这是瓶子上的条形码。但是,上面的“if”条件不起作用。 Xcode显示错误“赋值给readonly属性”。我相信我的“如果”条件整体上是错误的,虽然它看似合乎逻辑。我应该放置什么而不是这个,我很无能为力。下面是整体处理条形码数据的代码。
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
// ADD: get the decode results
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
// EXAMPLE: just grab the first barcode
break;
// EXAMPLE: do something useful with the barcode data
resultText.text = symbol.data;
//THIS IS THE FAULTY CODE.
if ([symbol.data = 04176400]) {
resultText.text = @"This is a sprite bottle";
}
// setup our custom overlay view for the came
// ensure that our custom view's frame fits within the parent frame
// EXAMPLE: do something useful with the barcode image
resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
//Delete below in entirety for continuous scanning.
[reader dismissModalViewControllerAnimated: YES];
}
答案 0 :(得分:0)
使用==
比较两个值。
if ([symbol.data == 04176400])
在Objective-C中,==
是一个比较运算符,在这种情况下你应该使用什么。 =
通常用于分配。另外,如果你试图正确改变symbol.data
,你会得到同样的错误,因为Xcode说它是一个无法改变的只读属性。