Quand je scanne le code à barres et que j'obtiens une certaine valeur si elle est égale à 2 alors je dois afficher avec == et si elle est égal à 3 alors je dois afficher avec = et si la valeur est 4 alors invalide.
Mais les codes à barres scannés sont de valeur entière – lors du déencoding à l'aide de NSASCII
il affiche uniquement jusqu'à la valeur 127
après qu'il affiche des résultats invalides. Par exemple: si ma valeur de code à barres = 9699
la valeur de résultat = jem
alors ma valeur de résultat ajoutée = jem=
valeur de la string actuelle = %å
valeur de l' asc n'indique que 37
Voici mon code:
- (void) readerView:(ZBarReaderView *)view didReadSymbols:(ZBarSymbolSet *)syms fromImage:(UIImage *)img { // do something useful with results -- cool thing is that you get access to the image too for (ZBarSymbol *symbol in syms) { [resultsBox setText:symbol.data]; if ([resultsBox.text length] == 2) { addedresult.text = [resultsBox.text ssortingngByAppendingSsortingng:@"=="]; } else if ([resultsBox.text length] == 3) { addedresult.text = [resultsBox.text ssortingngByAppendingSsortingng:@"="]; } if ([resultsBox.text length] >= 4) { addedresult.text = @"Invalid"; } [Base64 initialize]; NSSsortingng *mySsortingng = [[NSSsortingng alloc]initWithSsortingng:addedresult.text]; NSData * data = [Base64 decode:mySsortingng]; NSSsortingng * actualSsortingng = [[NSSsortingng alloc] initWithData:data encoding:NSASCIISsortingngEncoding]; NSLog(@"%@",actualSsortingng); labeltext.text= actualSsortingng; int asc = [actualSsortingng characterAtIndex:0]; label.text = [NSSsortingng ssortingngWithFormat:@"%d", asc]; [actualSsortingng release]; break; } }
Depuis que quelqu'un a relancé les commentaires de cette question, je vais relancer tout ce post.
Vous ne devriez pas passer par NSData pour créer un NSSsortingng à partir de quelque chose que vous avez déjà, et vous perdez probablement quelque chose en cours de route. Accédez directement à NSSsortingng en utilisant ssortingngWithFormat. En outre, ASCII reviendra et octet plus tard, si vous avez le choix, utilisez UTF8.
NSSsortingng *actualSsortingngUTF8 = [NSSsortingng ssortingngWithFormat:@"%@",[addedresult.text urlEncodeUsingEncoding:NSUTF8SsortingngEncoding]]; NSSsortingng *actualSsortingngASCII = [NSSsortingng ssortingngWithFormat:@"%@",[addedresult.text urlEncodeUsingEncoding:NSUTF8SsortingngEncoding]]; NSLog(@"%@",actualSsortingngUTF8); NSLog(@"%c",[actualSsortingngUTF8 UTF8Ssortingng]); //This is a const char*
Deuxièmement, j'ai regardé dans le SDK et dit que symbol.data est déjà un NSSsortingng *. Selon ce que vous voulez, vous n'aurez peut-être rien à faire. Si vous avez besoin de changer d'enencoding, assurez-vous de comprendre pourquoi vous devez le faire (une bonne raison est que "le rest de l'application utilise NS **** SsortingngEncoding").
Assurez-vous également de comparer les strings de manière correcte "Objective-C":
[actualSsortingng isEqualToSsortingng: testSsortingng];
NOT currentSsortingng == testSsortingng;