2009-07-21 14 views
6

Jestem całkiem nowy w Objective-C i zastanawiałem się, jaki był najlepszy sposób zarządzania kolekcjami krotek. W C użyłbym tablicy 2D lub struktury.Zarządzanie kolekcjami krotek w Objective-C

Czy powinienem tworzyć obiekty, które zawierają te krotki? Wydaje się, że przesadą jest sortowanie list lub czy nie ma żadnego dodatkowego obciążenia generowanego przez inicjalizację obiektu?

Odpowiedz

12

Zdecydowanie istnieje pewne obciążenie generowania obiektów. W przypadku niewielkiej liczby obiektów nadal należy stosować struktury danych ObjC. Jeśli masz dużą liczbę krotek, zarządzałbym nimi w tablicy C struktur. Pamiętaj, że Objective-C jest po prostu C. Właściwe i powszechne jest używanie konstruktów C w Objective-C (do punktu, uczenie się, gdzie ten punkt jest kamieniem milowym w zostaniu dobrym programistą Objective-C).

Zazwyczaj dla tego rodzaju struktury danych prawdopodobnie utworzyłbym pojedynczy obiekt Objective-C, który zarządzał całą kolekcją. Zewnętrzni rozmówcy widzieliby interfejs Objective-C, ale wewnętrzne dane byłyby przechowywane w bardziej wydajnej strukturze C.

Jeśli często dostęp do wielu krotek szybko, mój obiekt kolekcji prawdopodobnie zapewniłby metody "get" podobne do [NSArray getObjects:range:]. Metody ObjC, które zaczynają się od "get", wskazują, że pierwszym parametrem jest wskaźnik, który zostanie nadpisany przez metodę. Jest to powszechnie używane do uzyskania dostępu o wysokiej wydajności do rzeczy zarządzanych przez obiekt ObjC.

Ten rodzaj struktury danych jest dokładnie tak, jak programiści objc połączyć elegancję i naprawiania ObjC z wydajności i prostoty C

1

Myślę, że będziesz musiał zadowolić się obiektami NSArray of NSArray, a może NSArray obiektów NSDictionary. zawsze można toczyć swoją klasę, lub zrobić to tak, byś zrobił w C.

1

Istnieje kilka różnych sposobów można iść na ten temat:

  1. CoreData. Choć nie jest technicznie bazą danych, może zachowywać się podobnie do jednej. Jeśli nie potrzebujesz trwałości między uruchomieniami aplikacji, rozważ użycie typu magazynu NSInMemoryStoreType, w przeciwieństwie do NSSQLiteStoreType lub innej opcji. Jeśli jednak chcesz dołączyć do krotek razem, użycie CoreData absolutnie nie zadziała (to, IMO, jest głównym powodem, dla którego CoreData to , a nie bazy danych).
  2. Użyj prawdziwej bazy danych. SQLite jest dostępny na wszystkich komputerach Mac i iPhone i jest całkiem łatwy w użyciu, jeśli używasz takich wrapperów jak FMDB lub SQLite Persistent Objects lub PLDatabase lub EGODatabase lub GTMSQLite wrapper by Google.
  3. Krotka jest tak naprawdę zbiorem par klucz-wartość, więc można po prostu użyć NSMutableArray NSMutableDictionaries. Oczywiście nie użyjesz składni SQL i żadnych połączeń/zapytań, które musisz uruchomić, ale to z pewnością będzie miało najłatwiejszą konfigurację.
  4. Napisz klasę krotki i zapisz ją w NSMutableArray (podobnie do # 3, wymuszając wspólny zestaw atrybutów na twoich krotkach).
+5

Dlaczego chcesz korzystać z bazy danych, aby mieć krotki? – George