Согласно документации NSString выдает исключение, если байты равны нулю
Что вам нужно сделать, это проверить возвращаемое значение и создать строку, только если она не равна нулю
char *localityChars = sqlite3_column_text(compiledStatement, 8);
if (localityChars == nil) {
self.DirectionFromCity = nil;
} else {
self.DirectionFromCity = [NSString stringWithUTF8String: localityChars];
}
В ответ на комментарий ниже о повторном увеличении кода с дополнительной проверкой, вы можете уменьшить его, используя
self.DirectionFromCity = localityChars != nil?[NSString stringWithUTF8String: localityChars]:nil;
или используйте метод, который будет выполнять те же функции
self.DirectionFromCity = [self getSQLiteColumn:compiledStatement];