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 *>。第二個容器將存儲弱引用。 –