2010-03-17 18 views
7

Estaba planeando escribir un código cuya lógica se basó en probar la fecha de creación de un archivo en particular en la carpeta Documentos de mi aplicación. Resulta que, cuando llamo - [NSFileManager attributesOfItemAtPath: error:], NSFileCreationDate no es uno de los atributos proporcionados.¿Detecta la fecha de creación del archivo en el sistema operativo del iPhone?

¿No hay forma de descubrir la fecha de creación de un archivo?

Gracias.

+1

Hola Greg: han pasado 2 años, ¿qué tal una aceptación? : D – memmons

+0

Para ser sincero, no sé si su solución solucionó mi problema. (No recuerdo más). El problema que estaba teniendo no era el código para acceder a la fecha de creación; es que la fecha de creación simplemente no se devolvió como uno de los atributos del archivo. –

+0

¡LOL, hombre, eres duro! – memmons

Respuesta

1

Según Apple's reference, NSFileCreationDate está disponible en 2.0+:

NSFileCreationDate The key in a file attribute dictionary whose value indicates the file's creation date.

The corresponding value is an NSDate object.

Available in iPhone OS 2.0 and later.

Declared in NSFileManager.h.

+0

Acepto que está en los documentos ... pero en la práctica, cuando obtiene atributos de archivo y los ve a todos, no es uno de los atributos proporcionados. (Estoy lejos de mi computadora, de lo contrario, los enumeraría todos aquí. Hay 11, la fecha de creación no es uno de ellos.) –

+1

Debo añadir que este es el caso cuando estoy ejecutando en Simulator. No lo he intentado ejecutar en el teléfono real. Puedo intentarlo más tarde esta noche. –

+1

Bizarre. AtributosDeOfItemAtPath de NSFileManager: error: debe devolver un diccionario con todos estos: http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/doc/constant_group/File_Attribute_Keys - si no está allí, entonces parece que no tienes suerte. Seguro que debería ser. –

8

El fileCreationDate es de hecho parte del diccionario. Aquí hay un método que pasa un URI de archivo y toma algunos de los atributos del archivo:

- (NSDictionary *) attributesForFile:(NSURL *)anURI { 

// note: singleton is not thread-safe 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *aPath = [anURI path]; 

if (![fileManager fileExistsAtPath:aPath]) return nil; 

NSError *attributesRetrievalError = nil; 
NSDictionary *attributes = [fileManager attributesOfItemAtPath:aPath 
          error:&attributesRetrievalError]; 

if (!attributes) { 
    NSLog(@"Error for file at %@: %@", aPath, attributesRetrievalError); 
    return nil; 
} 

NSMutableDictionary *returnedDictionary = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys: 
     [attributes fileType], @"fileType", 
     [attributes fileModificationDate], @"fileModificationDate", 
     [attributes fileCreationDate], @"fileCreationDate", 
     [NSNumber numberWithUnsignedLongLong:[attributes fileSize]], @"fileSize", 
    nil]; 

return returnedDictionary; 
}
Cuestiones relacionadas