当我使用捆绑中的路径创建图像时,这就是我正在做的事情:
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"]];
我想要做的是尝试找到我的图像的路径,但不使用扩展名,而不使用'ofType'(因为我的图像的名称和她的扩展名存储在我的数据库中)类似的东西:
UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.jpg"]];
但我不知道该怎么做。
致以最诚挚的问候,
答案 0 :(得分:41)
为什么不拆分从DB获得的字符串?
NSString* fullFileName = @"image.jpg";
NSString* fileName = [[fullFileName lastPathComponent] stringByDeletingPathExtension];
NSString* extension = [fullFileName pathExtension];
现在你可以简单地使用:
[[NSBundle mainBundle] pathForResource:fileName ofType:extension]];
答案 1 :(得分:23)
您可以轻松使用NSBundle方法而不传递扩展名,只需传递nil即可。
[[NSBundle mainBundle] pathForResource:@"image.jpg" ofType:nil];
答案 2 :(得分:2)
- (NSData *)applicationDataFromFile:(NSString *)fileName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
return myData;
}
如果您希望它返回UIImage而不是NSData,可以很容易地进行调整。
此外,您没有说明是将图像保存到文档目录,还是在编译之前将它们添加到应用程序包中。因为如果是后者,您可以使用[UIImage imageNamed:(NSString *)filename]
来获取图像。它期望扩展名作为文件名的一部分。
答案 3 :(得分:0)
最简单的方法是分别在数据库中存储名称和文件类型,并使用第一种方法检索它们。我不确定您是否能够成功实现后者。
答案 4 :(得分:0)
我发现扩展名为“.jpg”时,必须使用ofType作为应用程序的扩展程序才能在iPod Touch上运行,而扩展名为“.png”我可以放“image.png” “在pathForResource中,并说出ofType:nil。但所有版本都在模拟器上运行。
应用包中包含图片文件,我正在使用:
[[NSBundle mainBundle] pathForResource:@"Auto" ofType:@"jpg"]
获得路径。