如何显示由NSDate的分类中的tableView事件?

我有一个事件的应用程序从SQLite数据库获取事件的数据并将其显示在的tableView。 我也转换日期从SQLite表从的NSString的NSDate。 现在我想显示按日期排序的记录,也不想显示已完成的事件。

这里是我的EventViewController.m

#import "EventViewController.h" @implementation EventViewController @synthesize events,eDate; #pragma mark - #pragma mark View lifecycle - (void)viewDidLoad { [super viewDidLoad]; self.title = @"Events"; //Get the DBAccess object; DBAccess *dbAccess = [[DBAccess alloc] init]; //Get event array from database self.events = [dbAccess getAllEvents]; //Close the database [dbAccess closeDatabase]; //Release dbAccess object to free its memory [dbAccess release]; } // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations. return YES; } #pragma mark - #pragma mark Table view data source // Customize the number of sections in the table view. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { NSLog(@"# of Sections"); return 1; } // Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { //NSLog(@"Countring Rows"); return [self.events count]; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"Creating cell"); static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } cell.selectionStyle = UITableViewCellSelectionStyleBlue; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; event = [self.events objectAtIndex:[indexPath row]]; // Configure the cell. cell.textLabel.text = event.name; cell.detailTextLabel.text = event.location; return cell; } #pragma mark - #pragma mark Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //Formate Date from string to NSDate NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMdd"]; NSDate *eeDate = [dateFormatter dateFromString:event.date]; NSLog(@"%@", eeDate); [dateFormatter setDateFormat:@"EEEE MMMM d, YYYY"]; eDate = [dateFormatter stringFromDate:eeDate]; NSLog(@"%@", eDate); [dateFormatter release]; //Event *event; if (tableView == self.tableView) { event = [self.events objectAtIndex:[indexPath row]]; //event = [[self.events objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]]; } else { event = [self.events objectAtIndex:[indexPath row]]; } EventDetailViewController *detailViewController = [[EventDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; detailViewController.eventDetail = [events objectAtIndex:indexPath.row]; detailViewController.eventName = event.name; detailViewController.eventLocation = event.location; detailViewController.eventNote = event.note; detailViewController.eventDate = eDate; detailViewController.eventTime = event.time; //Pust detail controller on to the stack [self.navigationController pushViewController:(UITableViewController *)detailViewController animated:YES]; //release the view controller [detailViewController release]; } #pragma mark - #pragma mark Memory management - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Relinquish ownership any cached data, images, etc that aren't in use. } - (void)viewDidUnload { // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. // For example: self.myOutlet = nil; } - (void)dealloc { [events release]; [super dealloc]; } @end

请帮忙。

--------------解决方案-------------

由于日期表示为yyyyMMdd ,我们可以使用通常的字符串比较,以消除使用当前日期的事件。 然后,我们可以将剩余的事件进行排序。

NSArray * allEvents = [dbAccess getAllEvents];

NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSString * todaysDateAsString = [dateFormatter stringFromDate:[NSDate date]];

NSArray * futureEvents = [allEvents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"date >= %@", todaysDateAsString]];

NSSortDescriptor * descriptor = [NSSortDescriptor descriptorWithKey:@"date" ascending:YES];
self.events = [futureEvents sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

您可以使用NSSortDescriptors到你的事件进行排序。

假设你有一个属性finished时会发出指示完成的情况下,你可以像这样的过滤器阵列

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"finished = NO"];
self.events = [[dbAccess getAllEvents] filteredArrayUsingPredicate:predicate];

比,如果事件对象有一个date属性,是你试图升序排序的人,你可以使用NSSortDescriptor对它进行排序。

NSSortDescriptor *descriptor = [NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
NSArray *arrayDescriptors = [NSArray arrayWithObject: descriptor];
self.events = [self.events sortedArrayUsingDescriptors:arrayDescriptors];
[descriptor release];

分类:目标C 时间:2012-01-01 人气:0
分享到:

相关文章

  • 寻找目标C /可可触摸的触摸点 2015-02-05

    我有一个问题,找到接触点. 我有一个函数loadView()在这里我设置16瓦(16 UIImageView ). 然后,在功能上: - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // Retrieve the touch point UITouch *touch=[[event allTouches]anyObject]; CGPoint point= [touch locationInView:touch.

  • 卓尔的下拉菜单目标C /可可触摸 2014-07-24

    我想显示一个下拉菜单由alphabel(A ...... Z)当我点击一个图像. 是否有可能在客观C.或者有什么更好的approch ??? --------------解决方案------------- 有可能的. 更好的办法? 也许显示出选择器视图

  • 访问的Objective-C /可可触摸数组 2012-12-18

    我使用可可触摸来构建一个iPhone应用程序. 我有一个NSMutableArray称为故事,上打印到控制台显示是这样的: 2009-07-20 12:38:30.541 testapp[4797:20b] ( { link = "http://www.testing.com"; message = "testing"; username = "test"; }, { link = "http://www.testing2.com&qu

  • 可可触摸地址簿框架问题 2012-02-28

    我想要检索使用的Objective-C /可可触摸从iPhone地址簿中的数据. 不过,我建的时候得到这个错误: ".objc_class_name_ABPeoplePickerNavigationController",从引用:字面指针@ _ @ OBJC @ _cls_refs中的ABPeoplePickerNavigationController LD InviteController.o:符号(S)未找到 我已经加入地址簿框架项目树的框架组. 我已导入的头文件为: #impor

  • iOS的8分机:如何在扩展使用厦门国际银行可可触摸框架内? 2012-06-01

    我创建的是iOS 8延伸(延伸行动具体),我有都在延伸和我的容器的应用程序中使用的一些用户界面,所以我想将这些视图控制器与我的可可触摸图书馆内的xibs,所以我可以我的应用程序和扩展名之间分享. 但让我吃惊的是,这些xibs既不在容器应用程序的包,也不是我的扩展的包,这样既没有我的应用或扩展程序可以读取这些xibs. 我应该怎么做才能实现这一目标? --------------解决方案------------- 您需要将目标定到这两个主要的应用和扩展应用程序. 点击厦门国际银行文件,然后在右边你

  • 凡在可可触摸事件? 2012-08-31

    我学会可可触摸好几天了,今天一直坚持在寻找实现自定义事件的方式. 事件我可以在连接检查见我UIView子类. 我有: 有一个UILabel和MyView的:UIView的上MainVindow. MyView的包含UISlider. 接口控制器和MyView的 // Controller.h @interface Controller : NSObject { IBOutlet UILabel *label; IBOutlet MyView *myView; } // I suppose tha

  • 什么是可可触摸常见的设计模式? 2012-11-02

    在Java社区,设计模式是很常见的名词. 在对象C和可可触摸的世界里,也有一些设计模式,如MVC,目标 - 动作,委托韩国国际志愿者组织等. 这里的目的问题是听到大师更多的专业经验. 毕竟,有些模式是常见的iOS开发使用. 就像有些是J2EE的世界很常见的. 因此质疑iOS开发领域,也许多少共同的模式? 让我把一些在这里 MVC 代表,目标 - 动作(V和C之间的通讯) KVC国际志愿者组织的通知(M和C之间的通讯) 辛格尔顿.... .... --------------解决方案-------

  • 可可触摸静态库可以用在Mac OSX上吗? 2012-12-30

    到目前为止,我一直在创造一个静态库分别用于OSX(可可静态库)和iOS(可可触摸静态库) 但看在构建设置在iOS可可触摸静态库的时候,我发现,部署部分包含一个条目"的Mac OSX部署目标". 这是否意味着,可可触摸静态库可以通过编译OSX的应用程序链接到?

  • 是否有意义先学习可可豹,然后可可触摸的iPhone? 2012-12-30

    其实我没有太在意Mac OS X的开发. 我想要做的只是iPod Touch和iPhone的发展. 但不管怎么说,我开始学习可可和Objective-C. 不过好像有可可和可可触摸之间有许多差异,所以我想知道如果我其实在浪费我的时间. 我是不是应该直接跳转到iPhone的主题? --------------解决方案------------- 我想你可能会有两种可可可可触摸或可可触摸可可,仍然有很好的把握上需要什么,为任何平台编程. 我想Cocoa开发在我的Mac在几年前,是很困惑. 我终于决定拿

  • 可可触摸:铺出日期一个月,查看日历 2013-03-04

    我知道,有可上网的几个可可触摸/ iPhone日历实现,但因为某些原因我试图创建自己的. 我运行到一个问题,我用它来铺陈的日期(我代表作为UIView的实例放在为子视图到另一个的UIView)的代码是搞乱在12月. 现在,我要做的就是分解之日将NSDateComponents的一个实例,然后拿到week和weekday的组件的属性要弄清楚的日期视图的X和Y"位置",分别. 我可以抵消由X位置week月我铺设的第一天属性. 简单的例子:2009年8月的第一天恰逢周六,其日期组件的week

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.296 (s). 10 q(s)