다음은 바코드를 스캔 할 수있는 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];
}
문자열을 비교하려고하지 않는 한 사실입니다 (바코드의 입력 방법을 모르는 경우) isEqualToString을 사용해야합니다. – sosborn
True 또는'if ([symbol.data == @ "04176400"])'도 작동합니다. – Anthony
아니, 그것은 다를 수있는 포인터를 비교하기 때문에 작동하지 않습니다. 문자열에는 항상 isEqualToString을 사용하십시오. – sosborn