在iOS上,有没有更快的方法来获取mainBundle资源的URL?

Jer*_*y L 2 cocoa-touch objective-c foundation ios

我们必须使用如此长的路才能到达文件的路径,这似乎有点奇怪:

NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                            pathForResource:@"0" ofType:@"aiff"]];
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更快的方法,例如类方法NSURLNSBundle

NSURL *soundURL = [NSURL urlFromMainBundle:@"0.aiff"];
Run Code Online (Sandbox Code Playgroud)

要么

NSURL *soundURL = [NSBundle urlFromMainBundle:@"0.aiff"];
Run Code Online (Sandbox Code Playgroud)

如果没有,有没有理由说它不是一个好形式?

Jus*_*Sid 5

怎么样:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"0" withExtension:@"aiff"];
Run Code Online (Sandbox Code Playgroud)

从那里开始,你也可以为NSURL或写一个类别NSBundle:

@interface NSURL (NSURL+Resource)
+ (NSURL *)URLForResource:(NSString *)resource;
@end

@implementation NSURL (NSURL+Resource)

+ (NSURL *)URLForResource:(NSString *)resource
{
   NSString *name = [resource stringByDeletingPathExtension];
   NSString *extension = [resource pathExtension];

   return [[NSBundle mainBundle] URLForResource:name withExtension:extension];
}

@end
Run Code Online (Sandbox Code Playgroud)