Objective-C, интегрирующий библиотеку C и передающий строковое значение — ошибка ARC

Я пытаюсь интегрировать стороннюю библиотеку C в свой проект, я никогда не делал этого раньше, и у меня возникла проблема с чем-то, что должно быть настолько простым, передачей строкового значения в функцию C.

Ниже мой код, и строка, которая терпит неудачу, генерирует следующую ошибку:

«Неявное преобразование указателя Objective C в const char * запрещено с помощью ARC»

Мой код:

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

Спасибо за вашу помощь.

1

Решение

Здесь вы проходите 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);
3

Другие решения

mc2coordфункция не берет NSString объект, а скорее строка C, или const char *, Выше, не сохраняйте myMapCode как NSString а вернее C-строка и у вас все будет хорошо.

0