将图像保存到目录中

问题描述 投票:0回答:1

[嗨,我想将图像保存到目录中,我通过了NSData,然后执行我认为会将文件保存在我创建的目录中的操作,但问题是它没有保存。到目前为止,这就是我所拥有的。为什么initWithContentsOfURL:encoding:error:不起作用,它返回null,但是我使用的另一种方法起作用?主要问题是WRITETOURL返回0,我认为这意味着信息存储不正确,有什么提示吗?

     NSFileManager *fm = [[NSFileManager alloc] init];
        NSArray * directoryPaths = [fm URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask];
        NSLog(@"%@", directoryPaths);
        NSURL* dirPath = nil;    
        dirPath = [[directoryPaths objectAtIndex:0] URLByAppendingPathComponent:[NSString stringWithFormat:@"photos.jpeg"]];
       NSError* theError = nil;
       [fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES attributes:nil error:&theError];

    UIImage* photoToStore = [UIImage imageWithData:photoToSave];

    NSString *pathContainingPhoto = [[NSString alloc] initWithFormat:@"%@.jpeg", UIImageJPEGRepresentation(photoToStore, 1.0)];
    NSError *error = nil;


    BOOL OK = [pathContainingPhoto writeToURL:dirPath atomically:YES encoding:NSUTF8StringEncoding error:&error];

    NSLog(@"OK = %d", OK); //Returns 0
    NSLog(@"%@", dirPath);

    //WHY DOESNT THIS VERSION WORK?
    // NSString *pathToFile = [[NSString alloc] initWithContentsOfURL:dirPath encoding:NSUTF8StringEncoding error:&error];
    NSLog(@"%@", pathToFile);

      NSString* pathToFile = [NSString stringWithContentsOfURL:dirPath encoding:nil error:nil];
    NSArray *dirContents = [fm contentsOfDirectoryAtPath:pathToFile error:nil];
    NSLog(@"%@", dirContents);
objective-c xcode nsstring nsurl nsfilemanager
1个回答
0
投票

这样做并在.h文件中进行int计数,并将其初始值count设置为0;在viewDidLoad中:

NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:[NSString stringWithFormat:@"Image_%d.png",count];
error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:stringPath]) // removing item it already exuts
{
   [[NSFileManager defaultManager] removeItemAtPath:stringPath error:&error];
}

if(photoToSave) // nsdata of image that u have
{
  [photoToSave writeToFile:stringPath atomically:YES];
}
count++; // maintaining count of images
© www.soinside.com 2019 - 2024. All rights reserved.