AVMetadata в NSURL, возвращающий NULL URL - PullRequest
0 голосов
/ 24 апреля 2019

Кажется, у меня проблема с моим кодом.Я использую камеру в качестве сканера штрих-кода и анализирую этот возвращенный штрих-код на своем сервере.Если я помещаю DetectionString в NSURL, результат в консоли будет следующим, наряду с сообщением с предупреждением о том, что у меня нет подключения к Интернету -

URL = (null)

Если я вытащу DetectionString изамените его на «STORE100», он работает нормально и дает мне URL и соединяется с моим сервером.Если я распечатываю строки обнаружения, он возвращает «STORE100», как и должно.

Кто-нибудь есть какие-либо предложения?

 AVMetadataMachineReadableCodeObject *barCodeObject;
    NSString *detectionString = nil;
    NSArray *barCodeTypes = @[AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code,
                              AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code,
                              AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode];

    for (AVMetadataObject *metadata in metadataObjects) {
        for (NSString *type in barCodeTypes) {
            if ([metadata.type isEqualToString:type])
            {
                barCodeObject = (AVMetadataMachineReadableCodeObject *)[_prevLayer transformedMetadataObjectForMetadataObject:(AVMetadataMachineReadableCodeObject *)metadata];
                highlightViewRect = barCodeObject.bounds;
                detectionString = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
                break;
            }
        }

        if ((detectionString != nil) && (counter<1))
        {

            if ([detectionString containsString:@"STORE"])
            {
                NSLog(@"testing STORE!!!");
                    counter++;
                    NSLog(@"testing!!! %@", detectionString);
                    NSString *test = detectionString;
                    NSURL *connectURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://grabngo.curtisboylan.com/api/storelookup.php?StoreID=%@", test]];
                    NSLog(@"URL = %@", connectURL);
                    NSData *jsonData = [NSData dataWithContentsOfURL:connectURL];
                    if(jsonData == nil)
                    {
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Connection Error" message:@"Please check your internet connection and try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                        [alert show];
                        return;
                    }

1 Ответ

0 голосов
/ 25 апреля 2019

Вы должны попробовать URL-кодировку отсканированного штрих-кода, прежде чем передавать его в NSURL.Возможно, в отсканированном коде есть некоторые непечатаемые специальные символы, которые не могут создать действительный NSURL:

NSURL *connectURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://grabngo.curtisboylan.com/api/storelookup.php?StoreID=%@",[test stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]];
...