我有一個名爲photoArray的對象數組,它有屬性日期和索引。我可以訪問像photoArray [arrayIndex] .index/photoArray [index] .date。 我是C++開發人員,所以我將所有的邏輯編碼在C++中。我想將這些對象從Swift傳遞給C++。我已經創建了C++類和它的頭文件。然後我創建了Objective-C中的C++包裝類,並在頭文件中定義了它。還創建了橋接頭。
我的問題 - 我的CPP-wrapper.mm中的代碼片段應該如何,就像我對字符串所做的一樣。另外什麼應該是我的CPP.cpp類中的數據類型?
我的目標是從C++打印這個photoArray。讓我知道是否有可能這樣做或需要澄清。
ViewController.swift如何將數組對象從swift/objective-c傳遞並轉換爲C++?
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let world = " passed as string"
CPP_Wrapper().hello_cpp_wrapped(world)
getPhotos()
func getPhotos() {
let photoLibraryAccess = PhotoLibraryAccess();
photoLibraryAccess.authenticate {
let photoArray = photoLibraryAccess.getPhotos()
CPP_Wrapper().eventclassification_cpp_wrapped(photoArray) // pass to c++} }}
CPP.cpp
void CPP::hello_cpp(const std::string& name) {
cout << "Hello " << name << " in C++" << endl; }
void CPP::event_classification(const int * objectArray){
// instead of int it should be name of class ?
cout<<objectArray[1]; }
CPP-Wrapper.mm
@implementation CPP_Wrapper
- (void)hello_cpp_wrapped:(NSString *)name {
CPP cpp;
cpp.hello_cpp([name cStringUsingEncoding:NSUTF8StringEncoding]);}
- (void)event_classification_cpp_wrapped:(NSArray *)eventArray {
CPP cpp;
cpp.hello_cpp() // what should be the conversion code? }
@end
PhotoLibraryAccess.h
@interface PhotoIndexDate : NSObject
@property (nonatomic, assign) NSUInteger index;
@property (nonatomic, copy, nonnull) NSString * date;
@end
@interface PhotoLibraryAccess : NSObject
- (void)authenticate:(void (^ _Nonnull)())completion;
- (nonnull NSArray <PhotoIndexDate *> *)getPhotos;
@end
謝謝@OmniProg。有用。我在CPP.cpp中創建了類eventObject,它持有日期和索引的數組。然後創建類實例來存儲來自CPP-Wrapper的photoArray – Viral