观看扩展 NSBundle URLForResource 始终为零
Watch extension NSBundle URLForResource always nil
在我的应用程序中,我使用带有资源目标的静态库,我已将资源目标连接到 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)
委托时,我使用相同的代码,但这次
- resourcesUrl 在不同的文件夹中,我在 finder 上找不到
- 捆绑为零
- path 显然是 nil
- didReceiveMessage 委托不在主线程上调用此代码(所以我在主线程上调度)
在同一个会话中,当应用程序之一 类 调用此代码文件路径 return 没问题,但是当 watch extension delegate 调用相同的代码时 returns nil
我尝试将静态库添加到 Target Dependencies
和 Compile Sources
并将资源目标添加到 Copy Bundle Resources
但我得到 No such file or directory error
好的,事实证明,当你 运行 观看模拟器时,它会杀死 iPhone 模拟器上的应用程序(但不会崩溃)所以它看起来像应用程序 运行ning 但实际上你无法实例化捆绑包或任何其他应用程序资源。 this blog post 解释如何 运行 应用程序和 watch 应用程序一起调试。
TL;DR :
while running code on simulator on Xcode menu bar select Debug ->
Attach to Process -> select the process of your iOS app from the list
(It'll probably be under Likely Targets)
在我的应用程序中,我使用带有资源目标的静态库,我已将资源目标连接到 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)
委托时,我使用相同的代码,但这次
- resourcesUrl 在不同的文件夹中,我在 finder 上找不到
- 捆绑为零
- path 显然是 nil
- didReceiveMessage 委托不在主线程上调用此代码(所以我在主线程上调度)
在同一个会话中,当应用程序之一 类 调用此代码文件路径 return 没问题,但是当 watch extension delegate 调用相同的代码时 returns nil
我尝试将静态库添加到 Target Dependencies
和 Compile Sources
并将资源目标添加到 Copy Bundle Resources
但我得到 No such file or directory error
好的,事实证明,当你 运行 观看模拟器时,它会杀死 iPhone 模拟器上的应用程序(但不会崩溃)所以它看起来像应用程序 运行ning 但实际上你无法实例化捆绑包或任何其他应用程序资源。 this blog post 解释如何 运行 应用程序和 watch 应用程序一起调试。
TL;DR :
while running code on simulator on Xcode menu bar select Debug -> Attach to Process -> select the process of your iOS app from the list (It'll probably be under Likely Targets)