将图像保存到目录

时间:2012-08-17 00:14:37

标签: objective-c xcode nsstring nsurl nsfilemanager

您好我想将图像保存到目录中,我传递NSData并执行我认为将文件保存在我创建的目录中但问题是它不会保存。这就是我到目前为止所拥有的。为什么initWithContentsOfURL:encoding:error:work,它返回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);

1 个答案:

答案 0 :(得分: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