6
votes

Gestion des collections de tuples dans l'objectif-c

Je suis assez nouveau à l'objectif-C et je me demandais quelle est la meilleure façon de gérer les collections de tuples. En C, j'utiliserais un tableau 2D ou une structure.

Devrais-je créer des objets pour contenir ces tuples? Il semble que la surkill ne soit surchargée pour des listes de tri et il n'y a pas de véritable charge supplémentaire générée par l'initialisation de l'objet?


0 commentaires

3 Réponses :


1
votes

Je pense que vous devrez vous contenter d'un nsarray d'objets NSARRAY, ou peut-être un nsarray d'objets Nsdictionary. Vous pouvez toujours rouler votre propre classe ou le faire comme vous le feriez en c.


0 commentaires

1
votes

Il y a quelques façons différentes que vous pourriez aller à ce sujet:

  1. Coredata. Bien que ce ne soit pas techniquement une base de données, cela peut se comporter beaucoup comme un. Si vous n'avez pas besoin de persévérance entre les exécutions de l'application, envisagez d'utiliser le type de magasin NsinMemoryStoretType, par opposition à un NSSQLITESTOREType ou à une autre option. Toutefois, si vous voulez vous joindre à des tuples ensemble, utiliser Coredata ne fonctionnera absolument pas (Ceci, IMO, est la principale raison pour laquelle Coredata est pas une base de données) .
  2. Utilisez une vraie base de données. SQLITE Navires sur chaque Mac et iPhone et est assez facile à utiliser si vous utilisez des wrappers tels que FMDB ou Objets persistants SQLITE ou pldatabase ou egodatabase ou le gtmsqlite wrapper par Google .
  3. Un tuple n'est vraiment qu'une collection de paires de la valeur clé, de sorte que vous puissiez simplement utiliser une nsmutableRayRayRay de Nsmutableddictions. Vous n'obtiendrez évidemment pas d'utiliser SQL Syntaxe et des jointures / requêtes que vous devez vous exécuter vous-même, mais cela aurait certainement la configuration la plus facile.
  4. Écrivez une classe de tuple et stockez-les dans un NsmutableArray (semblable au n ° 3, il suffit de faire appel à un ensemble commun d'attributs sur vos tuples).

1 commentaires

Pourquoi utiliseriez-vous une base de données pour avoir des tuples?



12
votes

Il y a définitivement quelques frais généraux dans la génération d'objets. Pour un petit nombre d'objets, l'utilisation des structures de données OBJC est toujours appropriée. Si vous avez un grand nombre de tuples, je les gérerais dans une gamme C de structures. Rappelez-vous que l'objectif-c est vraiment juste C. Il est approprié et commun d'utiliser C constructions C dans l'objectif-C (à un point; apprendre où ce point est représente une étape importante pour devenir un bon développeur de l'objectif-C).

Généralement pour ce type de structure de données, je créerais probablement un seul objet Objective-C qui gère toute la collection. Les appelants externes verraient donc une interface d'objectif-C, mais les données internes seraient stockées dans une structure C plus efficace.

S'il est courant d'accéder rapidement à beaucoup de tuples rapidement, mon objet de collection fournirait probablement des méthodes "Obtenir" similaire à [Nsarray GetObjects: plage:] . Les méthodes OBJC commencent par "GET" indiquent que le premier paramètre est un pointeur qui sera écrasé par la méthode. Ceci est couramment utilisé pour un accès de type C haute performance aux choses gérées par un objet Objc.

Ce type de structure de données est exactement la façon dont les développeurs Objc fusionnent l'élégance et la maintenabilité de l'OBJC avec la performance et la simplicité de c.


0 commentaires