Как написано, код ерунда. Вы создаете пустые неизменяемые данные, а затем пытаетесь создать строку из указанных пустых данных.
Что означает * Когда я проверяю длину объекта данных, он имеет значение *? Вы имеете в виду, что у вас есть больше кода, который вы не показываете? Что-то, что заполняет изменяемые данные несколькими байтами?
Кроме того, если полученные данные фактически не закодированы в виде строки UTF-8, преобразование завершится неудачно. На NSString есть несколько методов, которые позволяют преобразовать с потерями. Попробуйте один из них.