观看扩展程序NSBundle URLForResource始终为

时间:2016-03-15 09:26:30

标签: ios objective-c swift watchkit nsbundle

在我的应用程序中,我使用带有资源目标的静态库,我已将资源目标连接到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];

使用监视扩展,当应用程序收到func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void)委托时,我使用相同的代码,但这一次

  • resourcesUrl位于不同的文件夹中,我在finder上找不到
  • bundle is nil
  • 路径显然是零
  • didReceiveMessage委托不在主线程上调用此代码(所以我在main上调度)

在同一个会话中,当其中一个应用程序类调用此代码文件时,路径返回正常但是当监视扩展委托调用相同的代码时,它返回nil

我尝试将静态库添加到Target DependenciesCompile Sources 并将资源目标添加到Copy Bundle Resources,但我得到没有这样的文件或目录错误

1 个答案:

答案 0 :(得分:1)

好的,事实证明,当你运行手表模拟器它会杀死iPhone模拟器上的应用程序(但不会崩溃它)所以它看起来像应用程序运行,但实际上你无法实例化bundle或任何其他应用程序资源。 this blog post解释了如何在调试时一起运行应用程序和监视应用程序。

  

TL; DR:

     

在Xcode菜单栏上的模拟器上运行代码时选择Debug - >   附加到流程 - >从列表中选择iOS应用程序的进程   (它可能属于可能的目标)