Недопустимые операнды для двоичного * (есть 'char *' и 'char *')

Вот мой код:

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

показать следующую ошибку в третьей строке в Xocde:

Недопустимые операнды для двоичного выражения ('char *' и 'char *');

Любая идея решить эту проблему?


person Stoull    schedule 27.08.2015    source источник
comment
Неверный языковой тег. Это Objective-C?   -  person juanchopanza    schedule 27.08.2015


Ответы (2)


CFSTR — это макрос, который работает только со строковыми литералами, такими как CFSTR ("abc").

person gnasher729    schedule 29.08.2015
comment
ДА, я нашел описание CFSTR в документе Apple: создает неизменяемую строку из постоянной строки времени компиляции. CFStringRef CFSTR ( const char *cStr ); cStr Постоянная строка C (то есть текст, заключенный в двойные кавычки), из которой должна быть создана строка. - person Stoull; 02.09.2015

Я не уверен на 100%, чего вы пытаетесь достичь здесь, но если вы хотите преобразовать NSString в CFString, вы можете сделать это напрямую, не используя строку C, благодаря бесплатный переход:

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

// use value...

CFBridgingRelease(value);

Вот скриншот представления переменных, показывающий результат:

введите здесь описание изображения

person Steve Wilford    schedule 27.08.2015
comment
спасибо, Стив Уилфорд. Я просто пытаюсь использовать CFSTR и строку C вместо CFSTR и текста, заключенного в двойные кавычки, для создания CFString, но это не работает. - person Stoull; 02.09.2015
comment
Почему вы вообще пытаетесь использовать CFSTR? Если вы хотите CFString, используйте метод, который я описал. - person Steve Wilford; 02.09.2015