вернуть Dictonary из файла Objective c в Swift? - PullRequest
0 голосов
/ 10 октября 2018

Я работаю с open cv и swift.При возврате NSDictionary из файла Objective-C в Swift получаю ошибку.

2018-10-10 12:43:25.972927+0530 OPencvwithSwift[2430:618249] -[__NSFrozenDictionaryM length]: unrecognized selector sent to instance 0x1c022b6e0
2018-10-10 12:43:25.973704+0530 OPencvwithSwift[2430:618249] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSFrozenDictionaryM length]: unrecognized selector sent to instance 0x1c022b6e0'
*** First throw call stack:
(0x183eb6d8c 0x1830705ec 0x183ec4098 0x183ebc5c8 0x183da241c 0x1053c23d4 0x105360aa0 0x10585294c 0x104aec9a0 0x104ae287c 0x105cd51dc 0x105cd519c 0x105cd9d2c 0x183e5f070 0x183e5cbc8 0x183d7cda8 0x185d62020 0x18dd9c758 0x104af984c 0x18380dfc0)
libc++abi.dylib: terminating with uncaught exception of type NSException

Вот код Objective c -

- (NSDictionary *)predict:(UIImage*)img confidence:(double)confidence {

    cv::Mat src = [img cvMatRepresentationGray];
    int label;
    NSLog(@"%d",label);
    std::cout<<_labelsDictionary;
    self->_faceClassifier->predict(src, label, confidence);
    NSLog(@"%f",confidence);
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
    [dict setObject:[NSNumber numberWithInt:confidence] forKey:_labelsDictionary[@(label)]];
    NSLog(@"%@",dict);
    return dict;
}

Вызов этой функции из Swift:

let result = facemodel?.predict(greyimage, confidence: confidence) // crash on this line

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если я правильно вас понял, перед тем как использовать словарь, в других местах он был указан на строку.так что сбой

0 голосов
/ 10 октября 2018

Сбой вашего приложения при выполнении метода Objective-C, вероятно.Используйте точку останова в методе Objective-C и продолжайте шаг за шагом, чтобы найти ваш сбой.

Нет способа аварийно завершить присваивание предиката возврата метода pretict переменной результата.Это дает [AnyHashable: Any] для результата, поэтому у вас будет объект результата типа [AnyHashable: Any].

...