2012-07-23 2 views
0

다음은 바코드를 스캔 할 수있는 Zbar SDK의 코드입니다. 바코드를 읽으면 바코드 번호가 인터페이스의 textView 상자에 나타납니다. resultText.text = symbol.data는 바코드가 정보를 디코딩하고 바코드가 textView 상자에 표시되는 곳입니다. 그래서 기본적으로 바코드가 resultText.text에 배치됩니다 복호화 무엇 때문에, 나는 "만약"조건 추가 :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]; 
} 

답변

0

두 값을 비교하려면 ==을 사용하십시오.

목표 - C에서

if ([symbol.data == 04176400])

, ==는 비교 연산자, 당신은이 상황에서 사용되어야 하는지를. 일반적으로 =이 할당에 사용됩니다. 그리고 별도의 메모에서 symbol.data을 올바르게 변경하려고하면 Xcode에서 변경 될 수없는 읽기 전용 속성이기 때문에 동일한 오류가 발생합니다.

+1

문자열을 비교하려고하지 않는 한 사실입니다 (바코드의 입력 방법을 모르는 경우) isEqualToString을 사용해야합니다. – sosborn

+0

True 또는'if ([symbol.data == @ "04176400"])'도 작동합니다. – Anthony

+0

아니, 그것은 다를 수있는 포인터를 비교하기 때문에 작동하지 않습니다. 문자열에는 항상 isEqualToString을 사용하십시오. – sosborn

관련 문제