Tôi có mô hình 'Bút' và có các thuộc tính như sau: "makerName" và "Đếm". Làm thế nào tôi có thể nhận được tổng của tất cả 'Đếm'? Số liệu cốt lõi có thể tính cho tôi không? Cảm ơn ...iPhone: Dữ liệu cốt lõi, Cách lấy tổng giá trị từ db
Trả lời
Có hai cách để giải quyết vấn đề này:
đầu tiên - có được dữ liệu của bạn để NSSet hoặc NSArray và sử dụng toán tử @sum:
//assume that `pens` are NSArray of Pen
NSNumber *countSum=[pens valueForKeyPath:"@sum.count"];
thứ hai là sử dụng cụ lấy for specific value với thêm NSExpressionDescription với một khoản tiền. Bằng cách này khó hơn nhưng tốt hơn cho số lớn hơn của db là
Có, bạn có thể lấy chúng từ dữ liệu cốt lõi, thay vì tìm nạp và đánh giá kết quả. Bạn có thể thực hiện các chức năng như tổng hợp trên dữ liệu lõi bằng cách sử dụng NSExpression.
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"Count"];
NSExpression *sumOfCountExpression = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
Đối với một danh sách các chức năng mà bạn có thể sử dụng đi đây
Sau đó, bạn cần phải tạo đối tượng NSExpressionDescription nơi bạn đặt biểu thức tho sumOfCountExpression mà bạn vừa tạo.
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"sumOfCount"];
[expressionDescription setExpression:sumOfCountExpression];
[expressionDescription setExpressionResultType:NSDoubleAttributeType];
Sau đó, xây dựng yêu cầu của bạn như thường lệ và sau đó đặt thuộc tính để tìm nạp biểu thức đó.
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
Tham khảo: Core Data Programming Guide
Cần lưu ý rằng bạn cần phải đặt resultType trên NSFetchRequest thành NSDictionaryResultType và giá trị trả lại sẽ nằm trong từ điển được trả về dưới khóa 'sumOfCount' hoặc bất kỳ thứ gì bạn đặt trong setName ở trên. –
@ScottAllen: Cảm ơn! Đó là sự cố và khiến tôi trở nên điên rồ, và câu trả lời này là mô tả thứ hai về cách làm điều này tôi đã thấy rằng bỏ qua chi tiết quan trọng nhỏ bé này! –
- 1. Mới vào Dữ liệu cốt lõi cho iphone
- 2. Dữ liệu cốt lõi - Lưu trữ hình ảnh (iPhone)
- 3. Dữ liệu cốt lõi - Lấy mẫu đơn giản JOIN
- 4. Trình mô phỏng dữ liệu lõi IPhone
- 5. Dữ liệu cốt lõi: Lấy tất cả các thực thể
- 6. Lấy thực thể dữ liệu cốt lõi từ một thực thể cha mẹ
- 7. Dữ liệu cốt lõi tùy chỉnh SectionNameKeyPath
- 8. Dữ liệu cốt lõi và NSOperation
- 9. Cách kết nối hoặc tạo Sqlite DB với mô hình dữ liệu lõi trong iPhone
- 10. Di chuyển dữ liệu lõi: Cách xóa ngăn xếp Dữ liệu cốt lõi?
- 11. NSCoding VS Dữ liệu cốt lõi
- 12. Ứng dụng Mac/iPhone - đồng bộ hóa dữ liệu lõi với iCloud & thiết bị (sử dụng dữ liệu cốt lõi)
- 13. Tính giá trị lớn nhất cho thuộc tính dữ liệu cốt lõi - Lỗi NSCFNumber
- 14. Mối quan hệ dữ liệu lõi iPhone
- 15. Cần giúp đỡ với nhiều-nhiều mối quan hệ trong dữ liệu cốt lõi cho iPhone
- 16. So sánh ngày so sánh dữ liệu cốt lõi
- 17. Dữ liệu cốt lõi, cách lấy ObjectId của NSManagedObject khi NSFetchRequest trả về NSDictionaryResultType?
- 18. Xem nội dung của Dữ liệu cốt lõi
- 19. Lấy ID tối đa từ dữ liệu lõi & sqlite
- 20. Dữ liệu cốt lõi: UITableView với nhiều NSFetchedResultControllers
- 21. Dữ liệu cốt lõi có hữu ích cho dữ liệu chỉ đọc không?
- 22. Dữ liệu cốt lõi với MagicalRecord không lưu vào iCloud
- 23. Tổng dữ liệu cốt lõi của tất cả các thuộc tính của trường hợp
- 24. Dữ liệu cốt lõi và thiết lập BOOL
- 25. Bộ đặt hàng và dữ liệu cốt lõi (NSOrderedSet)
- 26. Làm cách nào để đặt giá trị mặc định cho thuộc tính dữ liệu cốt lõi trong xcode 4.0?
- 27. Dữ liệu cốt lõi: Cách thiết kế cấu trúc dữ liệu cây từ một mục dữ liệu chính
- 28. Cách cải thiện hiệu suất nhập dữ liệu lớn với dữ liệu cốt lõi trong ios
- 29. Sơ đồ dữ liệu cốt lõi từ cơ sở dữ liệu SQLite hiện có
- 30. Dữ liệu cốt lõi - Sao lưu vào Google App Engine (iPhone)
Grate, tôi thích cách thứ nhất. Và điều gì sẽ xảy ra nếu Bút có thêm một thuộc tính 'Màu' và tôi muốn đếm tổng số bút đỏ? – Jim
Đơn giản chỉ cần xây dựng mảng chỉ với bút màu đỏ bằng cách sử dụng NSPredicate, và tổng hợp mảng này. –
Cảm ơn rất nhiều ... – Jim