2011-08-15 42 views
5

ví dụ, tôi có một đối tượng quản lý tiết kiệm trong CoreData như độilàm cách nào để bạn chọn mục nhập có giá trị tối đa trong coredata?

@ interface: NSManagedObject

@property (nonatomic) NSNumber * teamID;

@end

tôi đã lưu thành công một số đội với teamID duy nhất trong CoreData, bây giờ tôi muốn để có được đội với tối đa teamID, làm thế nào để làm điều này?

Tôi đã từng nhận tất cả các đội và sắp xếp chúng, nhưng điều này sẽ mang lại chi phí lớn để tạo mảng được tìm nạp, có ý tưởng nào tốt hơn không?

Trả lời

5

Sử dụng NSExpression là một trong những cách để thực hiện việc này. Điều này đã được mô tả với một ví dụ hoàn chỉnh dưới phần Fetching Specific Values trong Core Data Programming Guide

+1

có, tôi đã sử dụng @ "@ max:", để nó có thể sử dụng bộ lọc MySQL thay vì tìm nạp tất cả kết quả và sau đó lọc trong bộ nhớ, cảm ơn rất nhiều. – CarmeloS

0

user465191,

Dưới đây là những gì tôi làm:

NSNumber *max = [teams valueForKeyPath: @"@max.teamID"]; 

NSPredicate *p = [NSPredicate predicateWithFormat: @"%K == %@", @"teamID", max]; 

Team *team = [[teams filteredSetUsingPredicate: p] anyObject]; 

Đó là cồng kềnh hơn tôi mong muốn nhưng nó làm việc.

Andrew

2
  1. Sử dụng một NSSortDescriptor cho bạn lấy theo yêu cầu sử dụng phương pháp -setSortDescriptors: NSFetchRequests để chỉ định một trật tự cho việc lấy đối tượng.

  2. Chỉ định giới hạn tìm nạp bằng cách sử dụng đối tượng đầu tiên của NSFetchRequest -setFetchLimit:.

Các vấn đề liên quan