我正在尝试将第三方 C 库集成到我的项目中,我以前从未这样做过,并且遇到了应该如此简单的事情的问题,将字符串值传递给 C 函数。
下面是我的代码,失败的行生成以下错误:
"ARC 不允许将 Objective-C 指针隐式转换为 'const char *' '
我的代码:
NSString *myMapCode = @"GBR H4J.XLL";
double lat = 0.0;
double lng = 0.0;
returnValue = mc2coord(&lat, &lng, "GBR H4J.XLL", 0); // This works perfectly
returnValue = mc2coord(&lat, &lng, myMapCode, 0); // This is my Problem code
感谢您的帮助。
这里你传递一个NSString
,而不是一个 C 字符串:
returnValue = mc2coord(&lat, &lng, myMapCode, 0);
如果该函数需要 C 字符串,则可以更改
NSString *myMapCode = @"GBR H4J.XLL";
自
const char *myMapCode = "GBR H4J.XLL";
或将NSString
转换为 C 字符串:
NSString *myMapCode = @"GBR H4J.XLL";
returnValue = mc2coord(&lat, &lng, [myMapCode UTF8String], 0);
mc2coord
函数不接受NSString
对象,而是接受 C 字符串或 const char *
。上面,不要将myMapCode
保存为NSString
而是保存 C 字符串,你会没事的。