【问题标题】:Invalid operands to binary * ( have 'char *' and 'char *' ) [duplicate]二进制 * 的无效操作数(有 'char *' 和 'char *' )[重复]
【发布时间】:2015-11-21 09:36:07
【问题描述】:

这是我的代码:

NSString *string    = @"Ciyt";
const char *City    = [CityString UTF8String];
CFStringRef value   = CFSTR(&City);

在 Xocde 的第三行显示以下错误:

二进制表达式的操作数无效('char *' 和 'char *');

有解决办法吗?

【问题讨论】:

  • 错误的语言标签。这是 Objective-C 吗?

标签: ios objective-c nsstring c-strings cfstring


【解决方案1】:

CFSTR 是一个仅适用于字符串文字的宏,例如 CFSTR ("abc")。

【讨论】:

  • 是的,我在苹果文档中找到了 CFSTR 描述:从常量编译时字符串创建不可变字符串。 CFStringRef CFSTR ( const char *cStr ); cStr 一个常量 C 字符串(即,用双引号括起来的文本),要从中创建字符串。
【解决方案2】:

我不能 100% 确定您在这里想要实现什么,但如果您想将 NSString 转换为 CFString,您可以直接执行此操作,而无需通过 C 字符串,感谢 toll-free bridging

NSString *string = @"Ciyt";
CFStringRef value = CFBridgingRetain(string);

// use value...

CFBridgingRelease(value);

这是显示结果的变量视图的屏幕截图:

【讨论】:

  • 谢谢,史蒂夫·威尔福德。我只是尝试使用 CFSTR 和 C 字符串而不是 CFSTR 和用双引号括起来的文本来创建 CFString,但它不起作用
  • 你为什么还要尝试使用CFSTR?如果您想要CFString,请使用我描述的方法。
猜你喜欢
  • 1970-01-01
  • 2021-08-16
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多