2012-02-20 14 views
12

Tengo un archivo plist en mis datos de aplicación que deseo actualizar desde un servidor web cada 24 horas. ¿Hay alguna manera de verificar cuándo se modificó por última vez el archivo o debería, de alguna manera registrar la fecha y la hora cuando actualizo el archivo, y usarlo para comparar?¿Recibe la última fecha de modificación del archivo de los archivos de datos de la aplicación?

if (lastMod > currentDate){ 
    [arrayFromXml writeToFile:path atomically:YES]; 
} 

Respuesta

43

Usted puede utilizar NSFileManager para esto:

NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:@"path/to/my/file" error:nil]; 

NSDate *date = [attributes fileModificationDate]; 

// compare 'date' 
// date > now 
if ([date compareTo:[NSDate date]] == 1) 
{ 
    [arrayFromXML writeToFile:@"path/to/my/file" atomically:YES]; 
} 
+0

'error:' es un 'NSError **'. Si no lo necesita, debe pasar 'NULL', no' nil'. –

+0

@ H2Co3 Supongo que si estás siendo pedante, sí. Aunque dudo mucho que alguien en la práctica se confunda. –

+0

@ RichardJ.RossIII AFAIK 'nil' y' NULL' se expande a lo mismo en iOS, es el concepto que difiere. –

-3

puede almacenar el NSDate en NSUserDefaults cuando saving..and luego compararlo con el tiempo actual para comprobar la diferencia ,,

+3

parece un bit overkill cuando NSFileManager hará esto por usted ... –

+2

sí tiene razón (no lo sabía) .. + 1 a usted de mí ... – Shubhank

Cuestiones relacionadas