浏览沙盒文件iOS设备

时间:2016-04-04 12:27:12

标签: ios objective-c cocoa-touch

我是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;
}

提前致谢

1 个答案:

答案 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 文件夹的内容,据我所知,该文件夹默认为空。