将 NSArray (Swift) 转换为向量 (C++)
Convert NSArray (Swift) to vector (C++)
我正在尝试将整数 NSArray 从 Swift 传递到 C++(矢量),并且我使用 Objective-C 作为它们之间的桥梁,转换将在此处进行。我在下面做了一个简单的例子,其中 Swift 中的一个数组被传递给 Objective-C,它被转换成一个向量传递给 C++,在那里它将执行一些计算和 return 字符串形式的结果。
Sample.swift
let myArray: Array<Int> = [10, 24, 13, 34]
HelloWorldWrapper().returnArrayAsString(myArray)
Sample.mm
@implementation HelloWorldWrapper
- (NSString *) returnArrayAsString:(NSArray *) myArray {
vector<int> myVector;
for (int j = 0; j< 4; ++j) {
int myInt = myArray[j]; // error: Cannot initialize a variable of type 'int' with an rvalue of type 'id'
myVector.push_back(myInt)
}
}
还有很多其他的东西,我试过也会导致错误。最终我的目标是将 Array[Int] 转换为向量以在 C++ 中使用。
Array<Int>
桥接为 NSArray<NSNumber *>
使用你的代码,你需要使用 intValue
给你一个 int
:
int myInt = [myArray[j] intValue];
我正在尝试将整数 NSArray 从 Swift 传递到 C++(矢量),并且我使用 Objective-C 作为它们之间的桥梁,转换将在此处进行。我在下面做了一个简单的例子,其中 Swift 中的一个数组被传递给 Objective-C,它被转换成一个向量传递给 C++,在那里它将执行一些计算和 return 字符串形式的结果。
Sample.swift
let myArray: Array<Int> = [10, 24, 13, 34]
HelloWorldWrapper().returnArrayAsString(myArray)
Sample.mm
@implementation HelloWorldWrapper
- (NSString *) returnArrayAsString:(NSArray *) myArray {
vector<int> myVector;
for (int j = 0; j< 4; ++j) {
int myInt = myArray[j]; // error: Cannot initialize a variable of type 'int' with an rvalue of type 'id'
myVector.push_back(myInt)
}
}
还有很多其他的东西,我试过也会导致错误。最终我的目标是将 Array[Int] 转换为向量以在 C++ 中使用。
Array<Int>
桥接为 NSArray<NSNumber *>
使用你的代码,你需要使用 intValue
给你一个 int
:
int myInt = [myArray[j] intValue];