0

以下は、バーコードをスキャンできる 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 は、「読み取り専用プロパティへの割り当て」というエラーを表示します。私の「if」条件は論理的に見えますが、完全に間違っていると思います。以下は、バーコード データ全体を処理するコードです。

- (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];
}
4

1 に答える 1

0

==2 つの値を比較するために使用します。

if ([symbol.data == 04176400])

Objective-C では、==は比較演算子であり、この状況で使用する必要があります。=通常、割り当てに使用されます。symbol.data別の注意として、 Xcode は変更できない読み取り専用プロパティであると言っているため、適切に変更しようとすると同じエラーが発生します。

于 2012-07-24T00:15:24.870 に答える