我在Core Data中有一个名为Info的实体和一个名为'date'的属性,其类型为string。我希望能够以合适的日期格式通过日期对实体进行排序。目前,'date'是一个格式为'mm / dd / yy'的字符串。如何适当地格式化字符串并执行排序。
这是我目前的代码段:
- (NSFetchedResultsController *)fetchedResultsController
{
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [delegate managedObjectContext];
NSFetchRequest *fetchRequest1 = [NSFetchRequest fetchRequestWithEntityName:@"Info"];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"date" ascending:NO];
[fetchRequest1 setSortDescriptors:@[sort]];
NSError *error0 =nil;
NSArray *results = [context executeFetchRequest:fetchRequest1 error:&error0];
fetchedObjects2 = results;
[fetchRequest1 setFetchBatchSize:20];
if (_fetchedResultsController != nil)
_fetchedResultsController = nil;
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest1
managedObjectContext:context sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
fetchedResultsController.delegate = self;
return fetchedResultsController;
}
这会显示在表格中。
- (void)reloadTableViewData
{
NSError *error;
if (![[self fetchedResultsController0] performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
[TableView reloadData];
[self.view setNeedsDisplay];
}
这是实体:
答案 0 :(得分:0)
通常,您应该以允许轻松操作数据的方式存储数据。您可以随时按摩它以获得您想要的任何演示效果。
如果你真的想把日期保存为mm / dd / yy,你还应该存储另一个项目,比如sortableDate,它是数字表示或字符串格式为yyyymmdd。
答案 1 :(得分:0)
除了NSDate
之外,绝对没有理由将日期存储在其他任何内容中。重构使用正确的日期对象和排序将是一件轻而易举的事。
如果您需要字符串,请使用日期格式化程序。
let formatter = NSDateFormatter()
formatter.dateFormat = "MM/dd/yy"
let stringRepresentation = formatter.stringFromDate(dateObject)
(请注意,这只是演示了如何获取特定字符串。实际上,您应该为不同的语言环境提供正确的日期字符串,即不要对dateFormat
进行硬编码。)