Advertencia 'fileAttributesAtPath: traverseLink está en desuso: primero desaprobado en ios 2.0

Hice esta function que devuelve el tamaño del file en el directory de documentos, funciona, pero advierto que deseo corregir la function:

-(unsigned long long int)getFileSize:(NSString*)path { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *getFilePath = [documentsDirectory stringByAppendingPathComponent:path]; NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:getFilePath traverseLink:YES]; //*Warning unsigned long long int fileSize = 0; fileSize = [fileDictionary fileSize]; return fileSize; } 

* La advertencia es 'fileAttributesAtPath: traverseLink: está en desuso primero en desuso en ios 2.0'. ¿Qué significa y cómo puedo solucionarlo?

En la mayoría de los casos, cuando obtiene un informe sobre un método en desuso, lo busca en los documentos de reference y le dirá qué reemploop usar.

fileAttributesAtPath: traverseLink: Devuelve un dictionary que describe los attributes POSIX del file especificado en un determinado. (Desaprobado en iOS 2.0. Use attributesOfItemAtPath: error: en su lugar.)

Entonces use attributesOfItemAtPath:error: lugar.

Aquí está la manera simple:

 NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:getFilePath error:nil]; 

La forma más completa es:

 NSError *error = nil; NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:getFilePath error:&error]; if (fileDictionary) { // make use of attributes } else { // handle error found in 'error' } 

Editar: en caso de que no sepa lo que significa desaprobado , significa que el método o la class ahora están obsoletos. Debe usar una API más nueva para realizar una acción similar.

La respuesta aceptada se olvidó de manejar traverseLink:YES de la pregunta.

Una respuesta mejorada es usar both attributesOfItemAtPath:error: y stringByResolvingSymlinksInPath :

 NSString *fullPath = [getFilePath stringByResolvingSymlinksInPath]; NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:fullPath error:nil];