2011-08-17 39 views
0

iam开发一个应用程序。在那我使用搜索栏搜索数据。但我的搜索是基于时间执行的。所以如何编写基于时间的数据搜索代码。对于普通字符串搜索,我写了代码如下。如何使用搜索栏区分基于时间的数据?

NSRange namerange=[databasefield.name rangeOfString:srchbar.text options:NSCaseInsensitiveSearch]; 
    NSRange adrsrange=[databasefield.address rangeOfString:srchbar.text options:NSCaseInsensitiveSearch]; 
    //NSRange timerange=[databasefield.insert_datetime rangeOfString:srchbar.text options:NSCaseInsensitiveSearch]; 

    if ((namerange.length>0)||(adrsrange.length>0)) 
    { 
     [copydata addObject:databasefield]; 
    } 

在上面的代码中的注释我写的代码的搜索基于时间。但它给人的error.So请告诉我如何获得这一个数据。

+0

究竟你基于时间的搜索是什么意思?您是否在某处显示时间戳,例如“2012年12月12日”,并且想要在用户在搜索栏中输入这些字符时搜索? – Akshay

回答

0

如果我理解正确的话你的问题,你可以把它像这里:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterNoStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
NSDate *searchDate = [dateFormatter dateFromString:srchbar.text]; 
[dateFormatter release]; 

for (int i = 0; i < [self.data count]; i++) { 
    NSDate *date = [self.data objectAtIndex:i]; 
    NSInteger result = [self compareTwoTimes:date date2:searchDate]; 

    if (result == NSOrderedSame) 
      [self.filteredArray addObject:[self.data objectAtIndex:i]]; 
} 

+ (NSInteger) compareTwoTimes:(NSDate *) date1 date2:(NSDate *) date2 
{ 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"HH:mm:ss"]; 

    NSString *dateString1 = [dateFormat stringFromDate:date1]; 
    NSString *dateString2 = [dateFormat stringFromDate:date2]; 

    NSDate *d1 = [dateFormat dateFromString:dateString1]; 
    NSDate *d2 = [dateFormat dateFromString:dateString2]; 

    [dateFormat release]; 

    return [d1 compare:d2]; 
}