我是iOS沙箱的新手。我试图列出设备沙箱中的所有文件。我无法成功
我的代码是
- (void)viewDidLoad {
NSLog(@"Files .. %@",[self showFiles]);
}
- (NSMutableArray *)showFiles
{
NSError *err = nil;
NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *myPath = [myPathList objectAtIndex:0];
NSArray *dirContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:myPath error:&err];
if(err) NSLog(@"showFiles() - ERROR: %@",[err localizedDescription]);
NSMutableArray *filePaths = nil;
int count = (int)[dirContent count];
for(int i=0; i<count; i++)
{
[filePaths addObject:[dirContent objectAtIndex:i]];
}
return filePaths;
}
提前致谢
答案 0 :(得分:3)
好的,当你传回一个未分配的数组对象时,你得到nil
:
NSMutableArray *filePaths = nil;
你想:
NSMutableArray *filePaths = [NSMutableArray new];
但是,鉴于您要将文件名从dirContent
复制到此数组中,您也可以直接返回dirContent
:
- (NSMutableArray *)showFiles
{
NSError *err = nil;
NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *myPath = [myPathList objectAtIndex:0];
NSArray *dirContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:myPath error:&err];
if (!dirContent)
NSLog(@"showFiles() - ERROR: %@",[err localizedDescription]);
return dirContent;
}
还有一点需要注意:您正在获取 Caches 文件夹的内容,据我所知,该文件夹默认为空。