iphone - 如何在 Objective-c 中将文件保存在应用程序的资源文件夹中

标签 iphone objective-c image

我正在用 objective-c 为 iphone 开发一个应用程序。我的问题是我的应用程序必须保存从 url 获取的图像。我认为该文件夹是只读的。这是我保存图像的代码:

-(void)banner:(NSString *)path{
    NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: path]];
    UIImage *image = [UIImage imageWithData: imageData];
    NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
    NSString* pathEnd =  [resourcePath stringByAppendingFormat:@"/banner.png"];
    NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
    NSError *writeError = nil;
    [data1 writeToFile:pathEnd options:NSDataWritingAtomic error:&writeError];
}

但是当我检索图像时,它不在那个文件夹中。我能做什么?

最佳答案

你不能,应用程序包是只读的。您应该将任何数据保存在文档或缓存目录中。

-(void)banner:(NSString *)path{
    NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: path]];
    UIImage *image = [UIImage imageWithData: imageData];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"banner.png"];

    NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
    NSError *writeError = nil;

   [data1 writeToFile:filePath options:NSDataWritingAtomic error:&writeError];

   if (writeError) {
      NSLog(@"Error writing file: %@", writeError);
   }
}

是否有任何理由先将数据转换为图像,然后再次转换回 NSData 对象?

如果没有,你可以这样做:

-(void)banner:(NSString *)path{
   NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: path]];
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);         NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"banner.png"];       
   NSError *writeError = nil;
   [imageData writeToFile:filePath options:NSDataWritingAtomic error:&writeError];

   if (writeError) {
      NSLog(@"Error writing file: %@", writeError);
   }
}

关于iphone - 如何在 Objective-c 中将文件保存在应用程序的资源文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122912/

相关文章:

iphone - 无法从 SQLite 数据库 iOS6.0 检索数据

iphone - UIImage 第一次加载时卡顿

ios - 如何获取通过 iphone 中的照片库选择的图像的名称?

iphone - 如果我对在 VMware 上运行的 OS X 感到满意,我真的必须购买 Mac 才能为 App Store 开发吗?

iphone - 检查文本字段文本是否几乎等于字符串

ios - Obj-C - 如何将 id 转换为 GLfloat[]

objective-c - 隐藏状态栏 : effect on bounds

ruby-on-rails - Rails 'link_to' 立即下载图像而不是在浏览器中打开它

ios - SKSpriteNode 能识别手势吗?

ruby - 如何在 ruby​​ 中使用 sinatra 提供生成的图像