如何将C ++矢量数据导入Swift

时间:2018-11-21 00:20:54

标签: c++ swift vector

我有一个Swift调用的C ++函数,我需要返回UIIMage的std::vector<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

迅速:

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

我知道Swift不会导入c ++数据结构,我想从向量中提取值。

谢谢。

1 个答案:

答案 0 :(得分:2)

您不能在Swift中使用std::vector,所以请不要返回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;
}