观看扩展 NSBundle URLForResource 始终为零
Posted
技术标签:
【中文标题】观看扩展 NSBundle URLForResource 始终为零【英文标题】:Watch extension NSBundle URLForResource always nil 【发布时间】:2016-03-15 09:26:29 【问题描述】:在我的应用程序中,我使用了一个带有资源目标的静态库,我已将资源目标连接到 Build Phases -> Copy Bundle Resources
,并像这样获取库资源:
NSUrl *resourcesUrl = [[NSBundle mainBundle] URLForResource:@"MySDKResources" withExtension:@"bundle"]
NSBundle *bundle = [NSBundle bundleWithURL:resourcesUrl];
NSString *path = [bundle pathForResource:filename ofType:fileExtension];
使用 watch 扩展,当应用程序收到 func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void)
委托时,我使用相同的代码,但这次
在同一会话中,当应用程序类之一调用此代码文件路径返回正常,但当监视扩展委托调用相同代码时,它返回 nil
我尝试将静态库添加到 Target Dependencies
和 Compile Sources
并将资源目标添加到 Copy Bundle Resources
但我得到 No such file or directory 错误
【问题讨论】:
【参考方案1】:好的,事实证明,当您运行手表模拟器时,它会杀死 iPhone 模拟器上的应用程序(但不会使其崩溃),因此看起来应用程序正在运行,但实际上您无法实例化捆绑包或任何其他应用程序资源。 this blog post 解释如何在调试时一起运行应用程序和监视应用程序。
TL;DR:
在 Xcode 菜单栏上的模拟器上运行代码时选择 Debug -> 附加到进程 -> 从列表中选择您的 ios 应用程序的进程 (它可能在可能的目标之下)
【讨论】:
以上是关于观看扩展 NSBundle URLForResource 始终为零的主要内容,如果未能解决你的问题,请参考以下文章