Macos Cocoa-从非主捆绑包加载资源

Macos Cocoa-从非主捆绑包加载资源,macos,cocoa,resources,nsbundle,Macos,Cocoa,Resources,Nsbundle,我的应用程序加载一些自定义包,并希望使用这些包中的资源 似乎不可能从主bundle实例获取资源,比如[NSBundle mainBundle]pathForResource:of type:] 所以我用+[NSBundle-pathForResource:ofType:inDirectory:]替换它,它工作得很好。但是,资源加载代码应该知道“inDirectory:”的捆绑路径,这非常不方便。如果将捆绑包移动到其他路径,它将不起作用 还有其他方法可以解决这个问题吗?谢谢大家! 我不完全确定您想

我的应用程序加载一些自定义包,并希望使用这些包中的资源

似乎不可能从主bundle实例获取资源,比如[NSBundle mainBundle]pathForResource:of type:]

所以我用+[NSBundle-pathForResource:ofType:inDirectory:]替换它,它工作得很好。但是,资源加载代码应该知道“inDirectory:”的捆绑路径,这非常不方便。如果将捆绑包移动到其他路径,它将不起作用


还有其他方法可以解决这个问题吗?谢谢大家!

我不完全确定您想要完成什么,但是如果您想在不使用捆绑包的直接路径的情况下加载捆绑包资源,您可以使用
[NSBundle bundleForClass:
[NSBundle bundlewithidentier:
。对所需捆绑包的实例进行引用后,可以按如下方式访问其内容:

NSBundle myBundle = [NSBundle bundleWithIdentifier:@"com.my.identifier"];
[myBundle pathForResource:@"myResource" ofType:@"type"];
如果您希望在捆绑包移动后仍保持准确,那么这可能是一个更棘手的问题。正如文档所述,“NSBundle对象表示文件系统中的一个位置…”。如果该位置移动,捆绑包实例仍将在现有位置中查找。我认为您需要找出另一种机制来确定捆绑包是否已移动,并从新位置重新创建NSBundle实例