如何在NSDocument目录中创建一个文件夹,我可以保存所有照片并在需要时从同一文件夹中删除数据?

时间:2012-12-12 10:45:20

标签: ios ios5 nsdocument nsdocumentdirectory

我有一个tableView,我为每个单元格获取一个图像url字符串,我将所有数据保存在NSDocument目录中。

我想将所有数据存储在NSDocument目录中的文件夹中,我还想稍后删除该文件夹中的所有内容。怎么做?

这是我正在使用的方法

(void)setThumbnailTo :(UITableViewCell *)cell withRefString:(NSString *)string   {


   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

   NSString *documentsDirectory = [paths objectAtIndex:0]; 


   NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"patientPhotoFolder"];


   NSString *imgPath = [string stringByReplacingOccurrencesOfString:@"amp;" withString:@""];

   imgPath = [imgPath stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

   NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

   NSString *key = [self sha1:imgPath];

   NSString *fileToSave = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg",key]];


   BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:fileToSave];
   if (!fileExists)
   {
       dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0ul);
        dispatch_async(queue, ^{
            NSData *imageData=[NSData dataWithContentsOfURL:[NSURL URLWithString:imgPath]];


            UIImage *image = [[UIImage alloc] initWithData:imageData];

            NSData *jpegData = UIImageJPEGRepresentation(image,4);

            [[NSFileManager defaultManager] createFileAtPath:fileToSave contents:jpegData attributes:nil];

            dispatch_sync(dispatch_get_main_queue(), ^{
               patientPhoto.image = image;
            });
        });
        patientPhoto.image = [UIImage imageNamed:@"patientPhoto.png"];
    }else{
        UIImage *image = [UIImage imageWithContentsOfFile:fileToSave];
        if(!image) image = [UIImage imageNamed:@"patientPhoto.png"];
        patientPhoto.image = image;
    }
}

1 个答案:

答案 0 :(得分:8)

如何懒洋洋地创建一个名为" patientPhotoFolder"的文件夹。在您的文档目录中(例如,这可以是NSFileManager上的类别:

- (NSString *)pathToPatientPhotoFolder {
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                                    NSUserDomainMask,
                                                                    YES) lastObject];
    NSString *patientPhotoFolder = [documentsDirectory stringByAppendingPathComponent:@"patientPhotoFolder"];

    // Create the folder if necessary
    BOOL isDir = NO;
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    if (![fileManager fileExistsAtPath:patientPhotoFolder
                           isDirectory:&isDir] && isDir == NO) {
        [fileManager createDirectoryAtPath:patientPhotoFolder
               withIntermediateDirectories:NO
                                attributes:nil
                                     error:nil];
    }
    return patientPhotoFolder;
}

如何删除该文件夹的内容(假设您将其作为NSFileManager上的类别实现):

NSString *patientPhotoFolder = [[NSFileManager defaultManager] pathToPatientPhotoDirectory];
NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:patientPhotoFolder error:nil];
for (NSString *filename in contents)  {
    [[NSFileManager defaultManager] removeItemAtPath:[patientPhotoFolder stringByAppendingPathComponent:filename] error:NULL];
}