NSMutableArray到std :: vector

时间:2017-06-18 13:13:43

标签: c++ ios objective-c stdvector objective-c++

是否可以将NSMutableArray的内容转换为std :: vector?如果是这样,是否应该在Objective-C或C ++代码中完成?

1 个答案:

答案 0 :(得分:2)

您可以使用任何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的语法(扩展名为mm的文件)。

如果需要将NSMutableArray中的数据转换为不同的表示形式,例如,NSNumber为int或NSString为std :: string,则应手动创建。