почему этот api (featuresInImage) не может работать в iOS10: — (NSArray *)featuresInImage:(CIImage *)изображение

#ios #objective-c #ios10 #cidetector

#iOS #objective-c #ios10 #cidetector

Вопрос:

   (NSString *)readQRCodeImage:(UIImage *)imagePicked {
CIImage *qrcodeImage = [CIImage imageWithCGImage:imagePicked.CGImage];
CIContext *qrcodeContext = [CIContext contextWithOptions:nil];

// detector
CIDetector *qrcodeDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:qrcodeContext options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];

// read features
NSArray *qrcodeFeatures = [qrcodeDetector featuresInImage:qrcodeImage];

//
NSString *qrcodeResultString = nil;
if (qrcodeFeatures amp;amp; qrcodeFeatures.count > 0) {
    for (CIQRCodeFeature *qrcodeFeature in qrcodeFeatures) {
        if (qrcodeResultString amp;amp; qrcodeResultString.length > 0) {
            break;
        }
        qrcodeResultString = qrcodeFeature.messageString;
    }
}
NSLog(@"%@",qrcodeResultString);

return qrcodeResultString;
  

}

Я хочу прочитать функции изображения, такие как изображение в iOS10.
Код работает нормально в iOS8 и iOS9.

Я был бы очень благодарен за любую помощь. введите описание изображения здесь

Комментарии:

1. Что на самом деле не так?

Ответ №1:

Я думаю, что они внесли изменения в класс CIFeautre. Теперь вам нужно преобразовать его в подкласс CIQRCodeFeature .

Как я это сделал в Swift:

 let userFeatures = userDetector?.features(in: userImage!) as? [CIQRCodeFeature]
userDecode = (userFeatures?[0].messageString)!