Как импортировать векторные данные C ++ в Swift - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть функция C ++, которая вызывается Swift, и мне нужно вернуть вектор из std::vector<UIImage *> UIIMage.Единственная проблема в том, что я не знаю, как получить значение вектора.

C ++ файл 1:

//  OpenCVWrapper.h

#import <UIKit/UIKit.h>

@interface OpenCVWrapper : NSObject

+(???) convert:(UIImage *) image;

@end

файл 2:

//  OpenCVWrapper.mm
#import "OpenCVWrapper.h"
#import <opencv2/opencv.hpp>
#import <opencv2/imgcodecs/ios.h>

class Converter {
public:
    UIImage *image;        
    std::vector<UIImage *> main() {

        // run code 

        return finalImage;
    };

};

@implementation OpenCVWrapper

+(std::vector<UIImage *>) convert:(UIImage *)image {
    Converter converter;
    converter.image = image;
    std::vector<UIImage *>newImage = converter.main();

    return newImage;

}

@end

Swift:

var multipleImages = OpenCVWrapper.convert(originalImage) //want array

Я знаю, что Swift не импортирует структуры данных c ++, я ищу, чтобы извлечь значения из вектора.

Заранее спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

Вы не можете использовать std::vector от Swift, поэтому не возвращайте std::vector.

Поскольку ваш вектор содержит экземпляры UIImage, просто верните NSArray:

+ ( NSArray< UIImage * > * )convert: ( UIImage * )image
{
    Converter converter;
    converter.image = image;

    NSMutableArray * images = [ NSMutableArray new ];

    for( auto i: converter.main() )
    {
        [ images addObject: i ];
    }

    return images;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...