我想使用此代码将String
返回给Swift:
MyFile.h :
+ (char *) myCoolCode;
MyFile.mm :
+(string)myCoolCode {
string myCoolString = "";
myCoolString += "123";
return myCoolString;
}
MyFile.swift :
let superCoolString = MyBridge.myCoolCode()
print(superCoolString)
但显然它似乎并没有以正确的方式运作,因为它在内心深处崩溃。
答案 0 :(得分:0)
正如其他人已经在评论中指出的那样,您应该将.mm
文件的返回类型修改为char *
而不是string
。你应该始终保持这两种类型相同。您的函数实现的示例可以是:
- (char *)myCoolCode
{
char str[] = "foobar";
//You can do whatever you want with str here. Just make sure it's null terminated
return str;
}
然后在你的快速代码中:
let myCoolString = String(cString: MyBridge.myCoolCode())
print(myCoolString)
字符串构造函数的引用是here.
您的代码崩溃的原因可能是因为您返回的std::string
实例在Swift中并不真正起作用。您可以使用std::string
,但在返回时必须将其转换为char *
。你可以这样做shown here.