2012-07-23 92 views
0

下面是来自Zbar SDK的代码,它允许您扫描条形码。读取条形码后,条形码号码将出现在界面的文本框中。在哪里看到resultText.text = symbol.data是条形码解码信息并允许条形码出现在textView框中的位置。所以基本上,因为无论条码解码放在resultText.text,我添加了“如果”条件:如何为resultText.text编写“if”条件?

if ([symbol.data = 04176400]) { 
    resultText.text = @"This is a sprite bottle"; 
} 

的精灵瓶的条形码是04176400.所以我想要的文字:“这是一个精灵瓶子”出现而不是04176400,这是瓶子上的条形码。但是,上面的这个“如果”条件不起作用。 Xcode显示错误“赋值为只读属性”。我相信我的“如果”条件是完整的,虽然它看起来是合乎逻辑的。我应该放置什么而不是这个,我很无能。以下是整体处理条形码数据的代码。

- (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

使用==来比较这两个值。

if ([symbol.data == 04176400])

在Objective-C,==是比较运算符,你应该用在这种情况下什么。 =通常用于分配。另外,如果您尝试正确更改symbol.data,您将得到相同的错误,因为Xcode是说它是不可更改的只读属性。

+1

这是真的,除非他想比较字符串(他可能不知道他的条形码是怎么进来的),他应该使用isEqualToString。 – sosborn 2012-07-24 00:20:33

+0

正确,或'if([symbol.data == @“04176400”])'也可以。 – Anthony 2012-07-24 00:23:57

+0

不,这不起作用,因为它比较指针,这可能是不同的。始终对字符串使用isEqualToString。 – sosborn 2012-07-24 00:42:44