2010-03-17 8 views
7

J'avais prévu d'écrire du code dont la logique était basée sur le test de la date de création d'un fichier particulier dans le dossier Documents de mon application. Il s'avère que, lorsque j'appelle - [NSFileManager attributesOfItemAtPath: erreur:], NSFileCreationDate n'est pas l'un des attributs fournis.Détecter la date de création du fichier sur iPhone OS?

N'existe-t-il aucun moyen de découvrir la date de création d'un fichier?

Merci.

+1

Salut Greg - ça fait 2 ans, comment ça va? : D – memmons

+0

Pour être honnête, je ne sais pas si votre solution a résolu mon problème! (Je ne m'en souviens plus.) Le problème que je rencontrais n'était pas le code pour accéder à la date de création; c'est que la date de création n'était simplement pas retournée comme l'un des attributs du fichier. –

+0

LOL, mec, vous êtes dur! – memmons

Répondre

1

Selon 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

Je suis d'accord que c'est dans les docs ... mais en pratique, quand vous obtenez des attributs de fichier et que vous les regardez tous, ce n'est pas l'un des attributs fournis. (Je suis loin de mon ordinateur, sinon je les énumérerais tous ici Il y en a 11. La date de création n'en fait pas partie.) –

+1

Je devrais ajouter que c'est le cas lorsque je cours sur Simulator. Je ne l'ai pas essayé en cours d'exécution sur le téléphone réel. Je peux essayer ça plus tard ce soir. –

+1

Bizarre. Erreur attributesOfItemAtPath de NSFileManager: doit renvoyer un dictionnaire avec tous ces éléments: 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 ce n'est pas le cas, il semble que vous n'ayez pas de chance. Cela devrait certainement être. –

8

Le fileCreationDate est en effet partie du dictionnaire. Voici une méthode qui passe un fichier URI et récupère certains des attributs du fichier:

- (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; 
}
Questions connexes