我做了这个函数,返回文件目录中的文件大小,它工作,但我得到警告,我希望修复,功能:
-(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;
}
Run Code Online (Sandbox Code Playgroud)
*警告是'fileAttributesAtPath:traverseLink:在ios 2.0中首先弃用的'.这是什么意思以及如何解决它?
在大多数情况下,当您收到有关已弃用方法的报告时,您可以在参考文档中查找它,它会告诉您要使用的替换方法.
fileAttributesAtPath:traverseLink: 返回一个字典,描述在给定文件中指定的文件的POSIX属性.(在iOS 2.0中不推荐使用.使用attributesOfItemAtPath:错误:代替.)
所以请attributesOfItemAtPath:error:改用.
这是一个简单的方法:
NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:getFilePath error:nil];
Run Code Online (Sandbox Code Playgroud)
更完整的方式是:
NSError *error = nil;
NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:getFilePath error:&error];
if (fileDictionary) {
// make use of attributes
} else {
// handle error found in 'error'
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果您不知道弃用的含义,则意味着该方法或类现在已过时.您应该使用较新的API来执行类似的操作.