5

Zaczęłam trochę pracować z Core Data, a chociaż zorientowałem się, jak go używać w zwykłych aplikacjach Cocoa, wygląda na to, że działa nieco inaczej w Cocoa Touch. W jaki sposób łączysz obiekty z obiektami takimi jak komórki tabeli w Cocoa Touch?Co to jest odpowiednik NSArrayController w Cocoa Touch?

Odpowiedz

4

Jeśli używasz CoreData na iPhone OS 3.0 lub nowszym, będziesz chciał spojrzeć na NSFetchedResultsController. Chociaż nie jest tak naprawdę analogiem do NSArrayController, jest zaprojektowany specjalnie do użycia z UITableView i jego kontrolerem.

Zapewnia sposób ładowania elementów z trwałości w razie potrzeby, mając na uwadze wydajność i ograniczenia pamięci urządzenia. Nie jest tak czysty, jak zwykłe bindowanie, ale prawdopodobnie zrobi wszystko, czego potrzebujesz (i więcej!) Za pomocą niewielkiej ilości kodu.

+0

Brak widoku 'NSFetchedResultsController', chociaż widzę' UITableViewController'; czy są one analogiczne? W każdym razie mam problem z ustaleniem sposobu dostarczania danych tablicy do kontrolera. Dzięki za wskazówkę dotyczącą niektórych różnic środowiskowych! – Kaji

+0

'NSFetchedResultsController' można znaleźć tutaj: http://developer.apple.com/iphone/library/documentation/CoreData/Reference/NSFetchedResultsController%5FClass/Reference/Reference.html – jbrennan

+0

' NSFetchedResultsController' zasadniczo działa jako klasa pomocnicza do ' UITableView' i 'UITableViewController'. Jest to klasa modelu, która działa z obiektami CoreData i przygotowuje je do wyświetlania w tabeli. – jbrennan

6

Niestety, wiązania nie są obsługiwane w systemie iPhone OS. Zobacz stronę this w dokumentacji dla programistów Apple.

Wierzę, że oznacza to, że nie można używać kontrolera NSArrayController w systemie iPhone OS.

+0

masz na myśli. ArrayControllers są okropne i mylą konfigurację. – SpaceDog

1

Jergason jest poprawny: nie można używać wiązań ani kontrolera NSArrayController z Core Data na iPhonie.

Zamiast tego sprawdź: NSFetchedResultsController, która "służy do efektywnego zarządzania wynikami zwracanymi przez żądanie pobierania danych rdzenia w celu dostarczenia danych dla obiektu UITableView."

Powiązane problemy