Podstawowe dane relacja wiele do wielu-pytanie predykatu
W moim podstawowym modelu danych mam dwa byty: List i Patient. List posiada atrybut "name".
Lista może mieć dowolną liczbę pacjentów i każdy pacjent może należeć do dowolnej liczby różnych list. Dlatego ustawiłem relację na liście o nazwie "pacjenci", która ma odwrotną relację do-wielu pacjentów i relację na pacjencie o nazwie "listy", która ma relację do-wielu do listy.
To, co staram się wymyślić, to jak stworzyć predykat, który wybierze wszystkich pacjentów, którzy należą do konkretnej nazwy listy.
Jak mam to zrobić? Nigdy wcześniej nie korzystałem z relacji w Core Data.
Dzięki,
3 answers
Dany model danych jak:
Lista > Pacjent,
Możesz znaleźć wszystkie instancje pacjentów, które należą do listy o określonej nazwie z żądaniem pobierania na jednostce pacjenta, używając predykatu takiego jak:
[NSPredicate predicateWithFormat:@"ANY lists.name LIKE[cd] %@", listName]
Zakładając, że listName
jest instancją NSString
o żądanej nazwie listy. LIKE[cd]
porównuje wielkość liter i znaki diakrytyczne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-23 18:28:24
To chyba Działa OK:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];
Gdzie myList jest rzeczywistą jednostką listy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-30 06:23:52
Wygląda na to, że twój model danych jest taki:
Lista > Pacjent
Myślę, że jeśli znasz konkretną nazwę listy, to znasz konkretny obiekt listy. Jeśli tak, możesz po prostu pobrać pacjentów za pomocą relacji to-many z listy do pacjenta-jest to zestaw przedmiotów pacjenta. Na przykład, jeśli relacja z listy do pacjenta nazywa się "pacjenci":
NSSet *patientSet = listObject.patients;
Uwaga: Wymaga to utworzenia podklas dla zarządzanych obiektów, aby uzyskać dostęp do atrybuty i relacje jako właściwości na obiektach.
Jeśli z jakiegoś powodu znasz tylko nazwę listy i pobierasz Obiekty pacjenta, możesz utworzyć predykat używając relacji to-many od pacjenta do listy (Załóżmy, że nazywa się ona "lists" i nazwa listy w łańcuchu o nazwie "listName"):
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY lists.name == %@",listName];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-24 18:50:11