我正在创建一个 手表应用程序,只是为了当用户点击 iPhone/主机应用程序中的表格视图时在手表上显示值。
我想收到共享值更改的通知UserDefault
。它在 WatchKit 应用程序和 iOS(主机)应用程序之间共享,因此当用户在主机应用程序中进行任何更改时,我希望收到通知。我做了以下事情:
当用户在应用程序(主机应用程序)中执行某些操作时:
NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.app"];
id object = [self.plantsArray objectAtIndex:[self.plantsTable indexPathForSelectedRow].row];
[shared setObject:object forKey:@"data"];
[shared synchronize];
在 Watchkit 扩展中已注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(print) name:NSUserDefaultsDidChangeNotification object:nil];
但不幸的是我没有收到任何通知,有人有解决方案吗?
我不认为iOS有能力distributed notifications
在应用程序和扩展程序之间,通知在两者之间不起作用,相反,您需要找到一种方法让两者都可以监视更改。例如文件。
正如您已经创建的group
,您可以在组文件夹中保留一个文件并添加一个filewatcher
在扩展中,从应用程序更新文件,并且filewatcher
会抓住变化,你的工作就完成了。
For filewatcher
看代码here.
希望能帮助到你。
Cheers.
Update
Find File watcher Swift version
here。谢谢@rivera
用于添加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)