iPhone: выбор структуры данных - PullRequest
0 голосов
/ 07 октября 2009

Мне нужно отслеживать группу объектов, которые могут быть идентифицированы двумя ключами (широта и долгота на самом деле, но есть и некоторые другие свойства). Мне нужно сделать такие вещи, как поиск определенного объекта по этим двум ключам, обновить его, если он есть, и вставить, если нет. Я думал. Я смотрел на NSDictionary и NSSet, но думал, что услышу, что говорят массы.

Ответы [ 3 ]

4 голосов
/ 07 октября 2009

Полагаю, проще всего использовать NSDictionary. Вы сможете получить свои данные, просто выполнив [dic objectForKey:key].

Кроме того, хорошей практикой является создание некоторых определений для ключей, чтобы было проще изменить имя ключа, а также избежать опечаток:

#define kObjectLatitude @"Latitude"
#define kObjectLongitude @"Longitude"

[object setObject:lat forKey:kObjectLatitude];
[object setObject:lon forKey:kObjectLongitude];

Не забудьте написать определения в умном месте. Если вы используете его только в одном классе, просто напишите их в начале объявления. Однако, если они вам нужны через другую часть вашего кода, вы можете рассмотреть возможность их перемещения в файл заголовка основного класса или в специальный файл заголовка для define:)

NS (Mutable) Set не будет вам полезен в этом случае. Наборы NSS - это математические наборы, и вы не можете получить доступ к определенным данным с определенным ключом (иначе, вы не можете задать набор: «Эй, дай мне долготу, где бы ты ни хранил ее!»)

3 голосов
/ 07 октября 2009

Это не прямой ответ, а слово предупреждения. Широта и долгота - это CLLocationDegrees, представляющая собой значение с плавающей запятой двойной точности. Проверка на равенство с плавающей точкой является рискованным предложением, поскольку математика с плавающей запятой является неточной. Вы можете легко потерпеть неудачу при проверке равенства на двух числах, которые теоретически должны быть равны. Я не знаю требований вашего приложения, но вы можете проверить близость, а не равенство.

2 голосов
/ 07 октября 2009

Использовать NSDictionary. Вот что это значит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...