2009-07-03 33 views
7

Tôi có một số NSFetchedResultsController đang tìm nạp đối tượng từ NSManagedObjectContext. Tôi đang sử dụng kết quả để điền UITableView.Đặt tiêu đề UITableView từ NSFetchedResultsController

Tôi đang lọc với hai bộ mô tả sắp xếp này.

NSSortDescriptor *lastOpened = 
    [[NSSortDescriptor alloc] initWithKey:@"lastOpened" ascending:NO]; 

NSSortDescriptor *titleDescriptor = 
    [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]; 

Và khi tôi tạo ra NSFetchedResultsController, tôi sắp xếp các phần qua sectionNameKeyPath:@"lastOpened".

Ngay bây giờ các phần của tôi hiển thị định dạng chuẩn như 2009-07-02 20:51:27 -0400 và vì không thể mở hai cùng một lúc, tất cả đều là duy nhất. Tôi cần chúng để bao gồm phạm vi ngày/giờ, chẳng hạn như cả ngày và ở dạng người có thể đọc được. Một cái gì đó như Thứ năm, ngày 2 tháng 7.

Cảm ơn!


Edit:

Đây là tất cả các bên trong một UITableViewController. Đây là một số mã nữa.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    // Display the dates as section headings. 
    return [[[fetchedResultsController sections] objectAtIndex:section] name]; 
} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 
} 
+0

Bạn có sử dụng các ràng buộc để điền bảng hoặc bạn đã viết nguồn dữ liệu cho UITableView không? –

+0

Người hỏi đang phát triển cho iPhone, vì vậy nó không thể là Bindings, vì điều đó không tồn tại trong Cocoa Touch. http://developer.apple.com/IPhone/library/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/PortingfromCocoa/PortingfromCocoa.html –

+0

Bạn nên lọc kết quả bằng cách đặt 'NSPredicates' thành bộ điều khiển kết quả đã tìm nạp của bạn, btw.Bạn vẫn có thể sắp xếp nhiều hơn một cách, nhưng nếu bạn chỉ muốn hiển thị các đối tượng nhất định trong đó "các thuộc tính là đúng" (nghĩa là một biến vị ngữ được đáp ứng) thì hãy sử dụng NSPredicates. – jbrennan

Trả lời

12

Tôi đã kết thúc việc thêm thuộc tính mới day vào lớp con NSManagedObject của mình để nhận chuỗi ngày được định dạng.

@property (nonatomic, readonly) NSString * day; 
@property (nonatomic, retain) NSDateFormatter * dateFormatter 

Sythesize dateFomatter. @synthesize dateFormatter;

Tôi khởi tạo trình định dạng ngày trong awakeFromFetch và awakeFromInsert.

self.dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[self.dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

Người truy cập cho day.

- (NSString *)day { 
    NSDate *date = self.startDate; 
    return [self.dateFormatter stringFromDate:date]; 
} 

Sau đó tôi đặt đường dẫn tên phần của mình để xem day; bạn không cần thực hiện bất kỳ thay đổi nào đối với các bộ mô tả sắp xếp của mình.

0

tôi đã không có một cơ hội để thâm nhập vào khu vực đó của SDK chưa (công việc của tôi là với C#, vì vậy những thứ iPhone là trong thời gian sở thích của tôi), nhưng từ những gì tôi có thể nói với bạn muốn để sử dụng init khác, cụ thể initWithKey: ascending: selector: và cho selector bạn có thể chuyển một bộ chọn tới phương thức so sánh của bạn mà chỉ so sánh trên Year/Month/Day, bỏ qua thời gian.

Đây là url để tham khảo: iPhone Library Documentation

Hy vọng điều này sẽ hữu ích!

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