pathForResource?不使用扩展(Iphone)

时间:2009-12-31 08:46:17

标签: iphone objective-c cocoa

当我使用捆绑中的路径创建图像时,这就是我正在做的事情:


UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"]];

我想要做的是尝试找到我的图像的路径,但不使用扩展名,而不使用'ofType'(因为我的图像的名称和她的扩展名存储在我的数据库中)类似的东西:


UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image.jpg"]];

但我不知道该怎么做。

致以最诚挚的问候,

5 个答案:

答案 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;
}

取自http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/FilesandNetworking/FilesandNetworking.html#//apple_ref/doc/uid/TP40007072-CH21-SW21

如果您希望它返回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"]

获得路径。