Обработайте пустые структуры в Objective C (Координата в пользовательском классе)

Я - вполне уверенный VC ++, просто вставляет возврат 0, если Вы не включаете один в основные функции. То же самое может произойти с функциями также, но в тех случаях, по крайней мере, Вы получите предупреждение.

9
задан coppro 2 November 2009 в 21:46
поделиться

2 ответа

Поскольку CLLocationCoordinate2D является структурой, не существует такой вещи, как значение nil . Objective-C инициализирует структуры значением 0, если они являются переменными экземпляра объекта, поэтому, если вы не установите значение для eventLocation , annotation.coordinate.longitude и eventLocation. lattitude оба будут равны 0. Поскольку это допустимое местоположение, это бесполезный маркер.

Я бы определил нефизическое значение:

static const CLLocationDegrees emptyLocation = -1000.0;
static const CLLocationCoordinate2D emptyLocationCoordinate = {emptyLocation, emptyLocation}

, а затем присвоил бы это значение вашему alert.info .eventLocation = EmptyLocationCoordinate для представления пустого значения. Затем вы можете проверить (alert.info.eventLocation == emptyLocationCoordinate) .

24
ответ дан 4 December 2019 в 07:14
поделиться

Я использовал приведенный выше код, за исключением того, что он не позволял мне объявлять константу с другой константой, поэтому я просто изменил ее на:

static const CLLocationDegrees EmptyLocation = -1000.0;
static const CLLocationCoordinate2D EmptyLocationCoordinate = {-1000.0, -1000.0};

Я также добавил в свой init для класса:

eventLocation = EmptyLocationCoordinate;

Спасибо за помощь, Барри.

4
ответ дан 4 December 2019 в 07:14
поделиться