Mam modelu „Pióra” i ma takie właściwości: „makerName” i „Count”. Jak mogę uzyskać sumę wszystkich "hrabiów"? Czy Core Data może to dla mnie oznaczać? Dzięki ...iPhone: Rdzeń danych, Jak uzyskać sumę wartości z db
Odpowiedz
Istnieją dwa sposoby rozwiązania tego problemu:
- najpierw uzyskać dane do NSSet lub NSArray i użyć operatora @sum:
//assume that `pens` are NSArray of Pen
NSNumber *countSum=[pens valueForKeyPath:"@sum.count"];
drugi stosując specyficzne sprowadzić for specific value z dodatkiem NSExpressionDescription z sumą. W ten sposób jest trudniejszy, ale lepiej dla większych DB
Tak, można uzyskać z tych danych podstawowych, zamiast pobierania i oceny wyników. Możesz wykonywać funkcje takie jak sumowanie danych rdzenia za pomocą NSExpression.
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Count"];
NSExpression *sumOfCountExpression = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
Listę funkcji, które można używać go tutaj
Następnie należy utworzyć obiekt NSExpressionDescription gdzie można ustawić wyrażenia tho sumOfCountExpression która właśnie została utworzona.
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"sumOfCount"];
[expressionDescription setExpression:sumOfCountExpression];
[expressionDescription setExpressionResultType:NSDoubleAttributeType];
Następnie skonstruuj swoje żądania tak, jak zwykle, a następnie ustaw właściwość, aby pobrać do tego wyrażenia.
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
Patrz: Core Data Programming Guide
Warto zauważyć, że trzeba ustawić resultType na NSFetchRequest być NSDictionaryResultType i że wartość zwracana będzie w zwróconym słowniku pod klucz „sumOfCount” lub cokolwiek ustawić w ustawNazwe powyżej. –
@ScottAllen: Dzięki! To było upaść i mnie jazdy Bonkers, i ta odpowiedź jest drugim opis jak to zrobić, widziałem, że pomija ten mały ważny szczegół! –
- 1. Rdzeń danych - Jak pobrać podmiot z max wartości nieruchomości
- 2. Jak uzyskać skumulowaną sumę
- 3. Wyodrębnianie sumę danych z XML w SQL
- 4. Jak uzyskać całkowitą sumę NSNumber z NSArray?
- 5. Rdzeń danych iPad/iPhone Blobs vs system plików dla 20k PDF
- 6. Rdzeń danych vs NSFileManager
- 7. Jak uzyskać sumę tablicę ciągów w ruby
- 8. Grupowa ramka danych i uzyskać sumę I liczbę?
- 9. Odczytać wartości logiczne z DB?
- 10. Jak uzyskać nazwę kolumny z Zend DB
- 11. Jak uzyskać sumę plików w katalogu?
- 12. Rdzeń danych: przerwać wykonywanie NSFetchRequest
- 13. Rdzeń danych crash - nierozpoznany selektor
- 14. Jak rdzeń PHP obsługuje połączenia z klientami?
- 15. SQLite: Uzyskaj sumę/sumę kolumn
- 16. Jak uzyskać sumę kontrolną SHA-1/MD5 pliku z Qt?
- 17. Jak uzyskać listę zainstalowanych dostawców OLE DB?
- 18. Jak uzyskać pierwszą wartość z NSMutableArray (iPhone)?
- 19. Jak uzyskać sumę dziedzinie czasu w serwerze SQL 2008
- 20. Wstaw lub zamień na sumę starych wartości
- 21. iPhone - uzyskiwanie unikatowych wartości z obiektu NSArray
- 22. Limit SQL przez sumę wartości rzędu za
- 23. Rdzeń danych: stwierdzenie jest nadal aktywny
- 24. Oblicz sumę kontrolną na telefonie iPhone od NSData
- 25. Rdzeń z PyQt4
- 26. Jak wstawić wartości domyślne DB w EF?
- 27. Jak analizować rdzeń zrzutowy
- 28. iPhone CoreLocation: jak uzyskać najdokładniejszą prędkość?
- 29. Rdzeń danych Pobieranie Properties z grupą przez hrabiego
- 30. Jak obliczyć sumę wartości w std :: vector <int>
Ruszt, podoba mi się pierwszy sposób. A co, jeśli Pióra mają jeszcze jedną właściwość "Kolor" i chcę policzyć sumę czerwonych piór? – Jim
Po prostu buduj tablicę tylko za pomocą czerwonych pisaków za pomocą NSPredicate i podsumuj tę tablicę. –
Thanks a lot ... – Jim