访问 Watchkit 扩展主机的 mainBundle 的内容
Access contents of Watchkit extension's host's mainBundle
我正在编写一个 WatchKit 扩展,我想从主机应用程序 [NSBundle mainBundle]
中读取一个文件。我试过 [NSBundle bundleWithIdentifier:]
但那只是 returns nil
.
我有几种可能的解决方法,但没有什么比 "just read what you need from the host's mainBundle
".
更简单的了
有办法吗?
据我所知,主机应用程序和您的 WatchKit 扩展只能通过以下两种方式之一共享文件:
- 共享应用组
- 在两个目标中包含一个文件
它们 运行 在不同的进程中,并且在批准的方法之外无法相互访问。
我 运行 遇到了与您类似的问题。主要的主机应用程序有一个我需要读取的特定 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的watch回调闭包中返回给我。似乎工作。尽管您的情况可能有所不同,但在这种情况下,此方法可能不可行。
来自 Apple WatchKit 编程指南:
要在应用之间共享首选项数据,请使用共享组的标识符创建一个 NSUserDefaults 对象。 initWithSuiteName: NSUserDefaults 的方法创建一个允许访问共享用户默认数据的对象。两个进程都可以访问此数据并向其写入更改。
您的主应用程序可以将 NSDictionary/NSArray 写入共享首选项,然后手表套件可以将其拉出,而无需启动主应用程序 - 但是,主应用程序必须 运行 至少更新一次共享首选项。
我正在编写一个 WatchKit 扩展,我想从主机应用程序 [NSBundle mainBundle]
中读取一个文件。我试过 [NSBundle bundleWithIdentifier:]
但那只是 returns nil
.
我有几种可能的解决方法,但没有什么比 "just read what you need from the host's mainBundle
".
有办法吗?
据我所知,主机应用程序和您的 WatchKit 扩展只能通过以下两种方式之一共享文件:
- 共享应用组
- 在两个目标中包含一个文件
它们 运行 在不同的进程中,并且在批准的方法之外无法相互访问。
我 运行 遇到了与您类似的问题。主要的主机应用程序有一个我需要读取的特定 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的watch回调闭包中返回给我。似乎工作。尽管您的情况可能有所不同,但在这种情况下,此方法可能不可行。
来自 Apple WatchKit 编程指南:
要在应用之间共享首选项数据,请使用共享组的标识符创建一个 NSUserDefaults 对象。 initWithSuiteName: NSUserDefaults 的方法创建一个允许访问共享用户默认数据的对象。两个进程都可以访问此数据并向其写入更改。
您的主应用程序可以将 NSDictionary/NSArray 写入共享首选项,然后手表套件可以将其拉出,而无需启动主应用程序 - 但是,主应用程序必须 运行 至少更新一次共享首选项。