2012-09-09 26 views
7

Tôi có một ứng dụng iOS sử dụng mô hình UIDocument đơn giản với một trường nội dung duy nhất để lưu trữ iCloud. Tôi lấy danh sách các tài liệu để điền một UITableView bằng cách sử dụng một NSMetadataQuery. Tôi muốn có tài liệu mới xuất hiện ở đầu bảng này, nhưng việc sắp xếp mặc định dường như cũ -> mới.Làm cách nào để sắp xếp kết quả icloud NSMetadataQuery của UIDocument bằng ngày sửa đổi?

Tôi biết nếu tôi có trường ngày tùy chỉnh trong tài liệu, tôi có thể sắp xếp truy vấn bằng NSSortDescriptor trên trường đó nhưng câu hỏi của tôi là có thể sắp xếp theo ngày sửa đổi nội tại của tệp được tạo qua bộ nhớ iCloud UIDocument ? Hoặc là có một phương pháp ưa thích để làm điều này?

+0

Bạn có tìm giải pháp nào cho điều này không? – rizzz86

Trả lời

11

Có vẻ như cách phù hợp để thực hiện việc này là đặt bộ mô tả sắp xếp truy vấn của bạn khi bạn tạo. Nội dung nào đó dọc theo các dòng sau:

NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; 
[query setSearchScopes:[NSArray arrayWithObject: 
          NSMetadataQueryUbiquitousDocumentsScope]]; 

NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K ENDSWITH '.bin'", 
            NSMetadataItemFSNameKey]; 
[query setPredicate:pred]; 

NSSortDescriptor *sortDescriptor = 
    [[[NSSortDescriptor alloc] initWithKey:NSMetadataItemFSContentChangeDateKey 
           ascending:FALSE] autorelease]; //means recent first 
NSArray *sortDescriptors = [NSArray arrayWithObjects: 
           sortDescriptor, 
           nil];   
[query setSortDescriptors:sortDescriptors]; 

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(queryDidFinishGathering:) 
    name:NSMetadataQueryDidFinishGatheringNotification 
    object:query]; 

[query startQuery]; 
0

Gist: Cách gọi -[NSURL getResourceValue:forKey:error:] và chuyển qua số NSURLContentModificationDateKey, sau đó thực hiện sắp xếp giảm dần trên giá trị NSDate được trả về.

Chi tiết: Bạn có thể chuyển qua bộ so sánh với -[NSMutableArray sortUsingComparator:] tìm nạp NSDate được yêu cầu cho từng đối tượng đang bay hoặc tìm tất cả chúng vào một mảng mới với đối tượng NSDate, id hợp chất và sắp xếp mảng của đối tượng đó trích xuất các tài liệu tham khảo id khi sắp xếp xong (thành ngữ trang trí-phân loại-undecorate).

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