2013-06-08 22 views
7

Powiedz, że mam kilka obiektów Artykułu przechowywanych w rdzeniowym modelu danych. Każdy artykuł zawiera atrybut postępu czytania, który określa, ile artykułu przeczytał użytkownik. Gdy użytkownik przeczyta artykuł w całości, artykuł zostanie oznaczony jako "Odczyt". Wcześniej będzie oznaczony jako "Nieprzeczytane".Utwórz wiersze grupy w NSTableView przy użyciu narzędzia CoreData wspieranego NSArrayController

Teraz mam NSTableView związany z NSArrayController zawierający wszystkie obiekty art przechowywane za pomocą CoreData. Chcę, aby wyświetlał wszystkie nieprzeczytane artykuły w grupie "Nieprzeczytane", a wszystkie czytają artykuły w grupie "Czytaj".

wiem o metodzie

- (BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row 

w NSTableViewDelegate. To jednak sugeruje, że musimy mieć rzeczywiste wiersze z napisem "Odczyt" i "Nieprzeczytane" w ramach kontrolera NSArrayController, który będzie promowany do grupy. Ponieważ NSArrayController zawiera obiekty artykułów wyciągnięte z CoreData, jak mam to zrobić?

Uwaga: To jest moje pierwsze pytanie tutaj, a ja jestem nowy w kakao, przejdź łatwe na mnie :)

+0

2 lata i nadal nie ma odpowiedzi. Czy znalazłeś rozwiązanie w międzyczasie? –

+0

Szukam również takiej funkcji, ale nie znalazłem rozwiązania. Czy byłeś w stanie to zrobić. Jeśli tak, czy mógłbyś mi powiedzieć, jak to osiągnąć. –

+0

Jednym z rozwiązań jest użycie zewnętrznego FRC podobnego do tego https://github.com/konstantinpavlikhin/KSPFetchedResultsController – CryingHippo

Odpowiedz

0

Proponuję za pomocą NSOutlineview i NSTreeController stworzyć grupowania zamiast NSTableView i NSArrayController.

0

Należy ręcznie wypełnić kontroler NSArrayController za pomocą niestandardowych instancji klasy, które dokładnie przechowują zawartość NSTableView, która ma zostać wykonana, w tym wiersze grupy. Sterownik musi być wypełniony we właściwej kolejności. Powinien więc zaczynać się od obiektu nagłówkowego grupy, a następnie niektórych obiektów danych, nowego obiektu nagłówkowego i tak dalej. Klasa niestandardowa powinna zawierać następujące właściwości:

Wartość ciągu dla nagłówka grupy. Jest zerowe, gdy wiersz nie jest nagłówkiem grupy.

Wartość boolowska toGroupHeader. Potrzebny do łatwego tableView: isGroupRow: implementation.

Wartość NSManagedObject dla zwykłych danych. Jest zerowe, gdy wiersz jest nagłówkiem grupy.

Dzięki temu masz wszystkie narzędzia do wdrożenia wszystkich delegatów NSTableView, aby uzyskać prawidłowo zgrupowany widok tabeli.