Sto usando seguente codice & suo lavoro perfettamente bene in iPhone OS 3,2per iPhone OS 4.0 metodo "dateFromString" di NSDateFormatter restituisce nil
+(NSDate *)NSDateFromString:(NSString *)dateString
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *dateObj=[dateFormatter dateFromString:dateString];
[dateFormatter release], dateFormatter=nil;
return dateObj;
}
Ma quando ho provato ad utilizzare lo stesso codice che iPhone OS 4.0 il dateObj era nulla.
Il motivo è:
metodo
- (id)init
per NSDateFormatter è disponibile solo in iPhone OS 2.0 con iPhone OS 3.2. È deprecato in iPhone OS 4.0.
Ora qual è la soluzione? Come inizializzare NSDateFormater? Qual è l'alternativa?
Possiamo convertire NSString in NSDate utilizzando NSDateComponents come: NSDateComponents * comps = [[NSDateComponents alloc] init]; [comps setDay: 6]; [comps setMonth: 5]; [comps setYear: 2004]; NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; NSData * date = [gregorian dateFromComponents: comps]; [versione comps]; – Rambo
Ma, ora cosa fare con NSDateFormatter? Non possiamo usarlo con IPhone OS 4.0? se sì allora come? – Rambo
solo perché è deprecato non significa che non funzionerà - potrebbe non funzionare in futuro. Se tu __NSLog (@ "% @", dateFormatter); __ dopo che hai chiamato init cosa ottieni? Se non si ottiene nulla, questo avviso non ha nulla a che fare con il tuo problema. – deanWombourne