访问Watchkit扩展的主机mainBundle

时间:2015-04-22 12:30:58

标签: objective-c ios8 bundle watchkit ios-extensions

我正在写一个WatchKit扩展,我想从宿主应用程序[NSBundle mainBundle]中读取一个文件。我已尝试[NSBundle bundleWithIdentifier:],但只返回nil

我有几个可能的解决方法,但没有什么比“只是从主机mainBundle读取您需要的内容”那么简单。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

据我所知,主机应用程序和WatchKit扩展程序只能以两种方式之一共享文件:

  • 共享应用程序组
  • 在两个目标中包含文件

它们在不同的流程中运行,并且在批准的方法之外不能彼此访问。

答案 1 :(得分:2)

我遇到了类似你的问题。主要主机应用程序有一个我需要阅读的特定pList,我无法从手表扩展中读取,因为它们是隔离的。

所以在观察中我调用了openParentApplication方法

在主应用程序中,我的处理程序是

-(void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
{
        NSString *request = [userInfo objectForKey:@"request"];
        if ([request isEqualToString:ReadFile])
        {
              //read the file. and then i like to put it into a NSDictionary
                NSDictionary *responseDictionary = //whatever
                 reply(responseDictionary);
        }
        else{ reply(nil); }
}

然后在openParentApplication监视的回调闭包中将内容返回给我。似乎工作。虽然您的情况可能有所不同,但在这种情况下,这种方法可能不可行。