2010-05-12 6 views
0

Ici, j'ai eu un problème avec les formateurs de date en fait j'avais une option pour rechercher des événements en fonction de la date.pour cela, je compare la date avec le magasin de date dans la base de données à la date de ce que j'ai écrit le code comme suit:Problème avec la dateformatter dans Iphone sdk

-(NSMutableArray*)getSearchAllLists:(EventsList*)aEvent 
{ 
[searchList removeAllObjects]; 
EventsList *searchEvent = nil; 
const char* sql; 
NSString *conditionStr = @" where "; 
if([aEvent.eventName length] > 0) 
{ 
    NSString *str = @"'%"; 
    str = [str stringByAppendingString:aEvent.eventName]; 
    str = [str stringByAppendingString:@"%'"]; 
    conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" eventName like %s",[str UTF8String]]]; 
} 
if([aEvent.eventWineName length]>0) 
{ 
    NSString *str = @"'%"; 
    str = [str stringByAppendingString:aEvent.eventWineName]; 
    str = [str stringByAppendingString:@"%'"]; 
    if([aEvent.eventName length]>0) 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" and (wineName like %s)",[str UTF8String]]]; 
    } 
    else 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@"wineName like %s",[str UTF8String]]]; 
    } 
} 
if([aEvent.eventVariety length]>0) 
{ 
    NSString *str = @"'%"; 
    str = [str stringByAppendingString:aEvent.eventVariety]; 
    str = [str stringByAppendingString:@"%'"]; 
    if([aEvent.eventName length]>0 || [aEvent.eventWineName length]>0) 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" and (variety like %s)",[str UTF8String]]]; 
    } 
    else 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@"variety like %s" ,[str UTF8String]]]; 
    } 
} 
if([aEvent.eventWinery length]>0) 
{ 
    NSString *str = @"'%"; 
    str = [str stringByAppendingString:aEvent.eventWinery]; 
    str = [str stringByAppendingString:@"%'"]; 
    if([aEvent.eventName length]>0 || [aEvent.eventWineName length]>0 || [aEvent.eventVariety length]>0) 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" and (winery like %s)",[str UTF8String]]]; 
    } 
    else 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@"winery like %s" ,[str UTF8String]]]; 
    } 
} 
if(aEvent.eventRatings >0) 
{ 
    if([aEvent.eventName length]>0 || [aEvent.eventWineName length]>0 || [aEvent.eventWinery length]>0 || [aEvent.eventVariety length]>0) 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" and ratings = %d",aEvent.eventRatings]]; 
    } 
    else 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" ratings = %d",aEvent.eventRatings]]; 
    } 
} 
if(aEvent.eventDate >0) 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"dd-MMM-yy 23:59:59"]; 
    NSString *dateStr = [dateFormatter stringFromDate:aEvent.eventDate]; 
    NSDate *date = [dateFormatter dateFromString:dateStr]; 
    [dateFormatter release]; 
    NSTimeInterval interval = [date timeIntervalSinceReferenceDate]; 
    printf("\n Interval in advance search:%f",interval); 
    if([aEvent.eventName length]>0 || [aEvent.eventWineName length]>0 || [aEvent.eventWinery length]>0 || aEvent.eventRatings>0 || [aEvent.eventVariety length]>0) 
    { 
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" and eventDate = %f",interval]]; 
    } 
    else 
    {   
     conditionStr = [conditionStr stringByAppendingString:[NSString stringWithFormat:@" eventDate = %f",interval]]; 
    } 
} 

NSString* queryString= @" select * from event"; 
queryString = [queryString stringByAppendingString:conditionStr]; 
sqlite3_stmt* statement; 
sql = (char*)[queryString UTF8String]; 
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) != SQLITE_OK) 
{ 
    NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database)); 
} 
sqlite3_bind_text(statement, 1, [aEvent.eventName UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(statement, 2, [aEvent.eventWineName UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(statement, 3, [aEvent.eventVariety UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(statement, 4, [aEvent.eventWinery UTF8String], -1, SQLITE_TRANSIENT); 
sqlite3_bind_int(statement, 5,aEvent.eventRatings); 
sqlite3_bind_double(statement,6, [[aEvent eventDate] timeIntervalSinceReferenceDate]); 
while (sqlite3_step(statement) == SQLITE_ROW) 
{ 
    primaryKey = sqlite3_column_int(statement, 0);  
    searchEvent = [[EventsList alloc] initWithPrimaryKey:primaryKey database:database]; 
    [searchList addObject:searchEvent]; 
    [searchEvent release]; 
} 
sqlite3_finalize(statement); 
return searchList; 
} 

ici, je compare la valeur d'intervalle dans la base de données et la date à laquelle nous sommes à la recherche et Im obtenir les différentes valeurs et les résultats sont introuvables.

Les gars m'aident à m'en débarrasser.

L'aide de quiconque sera grandement appréciée.

Merci Monish Calapatapu.

Répondre

0

J'ai du mal à suivre le problème. Pouvez-vous ré-éditer l'exemple de code pour les lignes qui montrent le problème? Un exemple de valeurs que vous entrez et sortez vous aidera également.

Questions connexes