Iphone 如何在Objective-c中保存应用程序资源文件夹中的文件
我正在用objective-c为iphone开发一个应用程序。我的问题是,我的应用程序必须保存从url拍摄的图像。我想这个文件夹是只读的。。这是我保存图像的代码:Iphone 如何在Objective-c中保存应用程序资源文件夹中的文件,iphone,objective-c,image,Iphone,Objective C,Image,我正在用objective-c为iphone开发一个应用程序。我的问题是,我的应用程序必须保存从url拍摄的图像。我想这个文件夹是只读的。。这是我保存图像的代码: -(void)banner:(NSString *)path{ NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: path]]; UIImage *image = [UIImage imageWithDat
-(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);
}
}
谢谢你!我将尝试:)请允许我使用第一个代码,我尝试一些解决方案:)它对我有效,为什么你说“你不能,应用程序包是只读的。”@ArashZeinoddini它将在模拟器和越狱设备上都有效。但是在普通的iOS设备上,应用程序包是只读的。@rckoenes,很抱歉我昨天给你投了-1票,现在它被锁定了,请做一些微小的更改以再次增加你的投票;)