1
是否可以将NSMutableArray的内容转换为std :: vector?如果是这样,这应该在Objective-C或C++代码中完成吗?NSMutableArray to std :: vector
是否可以将NSMutableArray的内容转换为std :: vector?如果是这样,这应该在Objective-C或C++代码中完成吗?NSMutableArray to std :: vector
您可以使用任何Objective-C类型创建一个向量。
例如一个NSString的实例存储到一个载体,可以使用下面的代码:
NSMutableArray<NSString*>* array = [@[@"1", @"2"] mutableCopy];
__block std::vector<NSString*> vectorList;
[array enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
vectorList.push_back(obj);
}];
for (std::vector<NSString*>::const_iterator iterator = vectorList.cbegin(); iterator != vectorList.cend(); iterator++)
{
NSLog(@"%@", *iterator);
}
你应该在Objective-C++文件中使用它,因为C++没有与毫米的Objective-C(文件语法延期)。
如果您需要将NSMutableArray中的数据转换为不同的表示形式,例如,将NSNumber转换为int或将NSString转换为std :: string,则应该手动创建它。
是的,这是可能的。你可以在可变数组中的每个元素上使用一个桥接类型转换为void指针,并将其存储在'std :: vector'中。例如:https://stackoverflow.com/questions/7298912/convert-nsdictionary-to-stdvector?rq=1它当然必须在Objective-C++ .mm文件中完成。 – Brandon
非常感谢。您的意见已经能够让我开始。 – Pibomb
@Brandon,很抱歉,您可以使用Objective-C++的模板来创建任何Objective-C类型的规范。例如:std :: set,std :: vector <__ weak NSObject *>。第二个容器将存储弱引用。 –