J'ai besoin de garder trace d'un tas d'objets qui peuvent être identifiés par deux clés (Latitude et longitude en fait, mais il y a d'autres propriétés). Je dois faire des choses comme rechercher un objet particulier par ces deux clés, le mettre à jour s'il est là et l'insérer sinon. Je pensais. Je regardais NSDictionary et NSSet mais j'ai pensé que j'entendrais ce que les masses ont à dire.iPhone: choix de la structure de données
Répondre
Je suppose que la façon la plus simple est d'utiliser NSDictionary
. Vous serez en mesure d'obtenir vos données en faisant simplement [dic objectForKey:key]
.
En outre, une bonne pratique est de créer des définit pour les clés, de sorte qu'il est plus facile de changer un nom de clé et permet également d'éviter faute de frappe:
#define kObjectLatitude @"Latitude"
#define kObjectLongitude @"Longitude"
[object setObject:lat forKey:kObjectLatitude];
[object setObject:lon forKey:kObjectLongitude];
Ne pas oublier d'écrire les définit dans un endroit intelligent. Si vous l'utilisez uniquement dans une classe, écrivez-les simplement en haut de la déclaration. Toutefois, si vous avez besoin dans différentes parties de votre code, vous pouvez envisager de déplacer le fichier d'en-tête de la classe principale, ou un fichier d'en-tête spécifique définit :)
NS (Mutable) Set ne sera pas utile pour vous dans ce cas. NSSets sont des ensembles mathématiques, et vous ne pouvez pas accéder à une donnée spécifique avec une clé spécifique (aka, vous ne pouvez pas demander un ensemble: "Hey, donnez-moi la longitude, où vous l'avez stocké!")
Utilisez NSDictionary . C'est ce que cela signifiait.
Ceci n'est pas une réponse directe, mais un mot d'avertissement. La latitude et la longitude sont CLLocationDegrees, qui est une valeur à virgule flottante double précision. Tester l'égalité sur les flottants est une proposition risquée, car le calcul en virgule flottante est inexact. Vous pouvez facilement faire échouer un test d'égalité sur deux flottants qui devraient théoriquement être égaux. Je ne connais pas les exigences de votre application, mais vous pouvez tester la proximité plutôt que l'égalité.
- 1. Structure de données utilisée pour la structure de répertoire?
- 2. iPhone + Option à choix multiple
- 3. sélection de la structure de données
- 4. structure de la base de données
- 5. Structure de données d'arbre
- 6. Meilleure structure de données pour la recherche?
- 7. Structure de la structure XML dans le schéma de la base de données
- 8. idiomatiques Ruby: la transformation de la structure de données
- 9. comment vérifier la structure de la base de données interne
- 10. Chargement de la base de données iPhone
- 11. base de données relationnelle et la structure de réseau
- 12. Structure de la base de données du mur Facebook
- 13. Sémantique de la structure html pour les pages de données
- 14. Delphi: Imiter la structure de données de MS OneNote
- 15. structure du modèle de base de données
- 16. Quelle est la meilleure structure de données pour les données arborescentes de profondeur fixe en C#?
- 17. PyAMF choix de backend!
- 18. Exportation de données iPhone
- 19. Iphone type de données
- 20. structure de données laide à la recherche java
- 21. À quoi ressemble la structure de données du numéro d'Inode?
- 22. Comment découvrir la structure d'une base de données PostgreSQL?
- 23. Données de planification des tâches/structure d'objet
- 24. comment analyser une structure de données arborescente?
- 25. Structure de données pour les relations
- 26. Choix de la technologie du projet
- 27. Catch Choix de bloc
- 28. Structure de la base de données pour les données de base remplacées sélectivement par client
- 29. C#: Pointeur vers la structure à l'intérieur de la structure
- 30. Class Dictionary dans java (structure de données)
Bon commentaire, merci. J'ai vraiment été mordu avant quand il s'agit d'opérations mathématiques avec des flotteurs. Je les ai arrondis à quelques chiffres significatifs et cela semble fonctionner jusqu'à présent. Va regarder pour ça. – Codezy