我需要在watchOS 2中获取WatchKit App的用户当前位置.我该怎么办?
我有一个带有Tableview的iPhone应用程序,其数据来自CoreData.

相同的数据也会显示在观看应用中:

如果我从iPhone应用程序中添加一行:

我在Watch应用程序中重新加载数据:

我看到旧行空了!

如果停止手表应用程序并重新启动它,一切都会正确显示!

这是在Watch应用程序中填充Tableview的代码
-(void)awakeWithContext:(id)context{
[super awakeWithContext:context];
[self loadTable];
}
-(void)loadTable{
NSLog(@"loadTableData");
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Data"];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Data"
inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortByDate = [[NSSortDescriptor alloc] initWithKey:@"sortedDateAndTime" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByDate, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
self.watchMArray = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
// [self.watchTableView setRowTypes:self.watchMArray];
[self.watchTableView setNumberOfRows:self.watchMArray.count withRowType:@"data"];
for (NSInteger i = 0; i < self.watchMArray.count; i++)
{
WatchTableCell *cell = [self.watchTableView rowControllerAtIndex:i];
NSManagedObject *data = …Run Code Online (Sandbox Code Playgroud) 我希望有人可以对此有所了解.我尝试过研究,却找不到任何东西......
有没有办法在iPhone应用程序和Apple Watch扩展程序之间共享一个类?
让我们说在手表扩展中我有一堂课myClass; 我无法在手机应用程序中使用此类.反正有没有绕过这个?
在我的WatchKit应用程序中,当用户首次启动它时,我想向他们提供一个有用的消息提醒,告诉他们应用程序的工作方式,例如按钮的功能等.
是否有类似于UIAlertView/UIAlertController的东西我可以在WatchKit应用程序中调用?我无法找到关于这个主题的答案,这很可能意味着它不可能.
每当我在我的子类中建立任何连接时,WKIInterfaceController我都会WatchKit error - unable to find interface controller class 'myClass' to instantiate在模拟器中显示错误和活动指示器,并且视图不会加载.断开所有连接并正确显示视图但仍然出现错误
试着
无法找到接口控制器类'InterfaceController'来实例化
WatchKit reloadRootControllersWithNames导致错误,使用pageController或push/pop之后
两个链接提示一个错误,如果它是一个错误,这肯定不会出现在XCode的发布版本上,并且每个人都会遇到相同的行为呈现watcKit几乎没用?
我添加了一个共享框架,用于在app和watch扩展之间共享代码.后来我删除了共享框架,因为它会导致很多问题.我可以在iphone上构建和运行我的应用程序并观看.但是当我提交到app store时,我看到了这两个错误:
ERROR ITMS-90205:"无效的捆绑包.'xxx WatchKit Extension.appex'的捆绑包含不允许的嵌套捆绑包."
ERROR ITMS-90206:"无效的捆绑包.'xxx WatchKit Extension.appex'包含不允许的文件'Frameworks'."
我已经尝试了stackoverflow上提到的所有解决方案(这个,这个,这个)它们都不适用于我.我该如何修复错误?来自苹果的错误消息实际上并不能说明我应该做些什么.
它看起来并不像今天发布的WatchKit包含这样的API.
为了有效地提出我的问题,我们首先考虑一下我面临的确切情况:
常规设置
导致问题的事件顺序
用户启动主机应用程序.它开始从远程API资源获取数据.核心数据模型对象基于API响应创建,并"upserted"到主机应用程序的托管对象上下文中.每个API实体都有一个uniqueID,用于在远程API后端中标识它.通过"upsert",我的意思是,对于每个API实体,主机应用程序仅在无法找到给定唯一ID的现有条目时在Core Data中创建新条目.
同时,用户还启动了一个主机应用程序的扩展.它也可以从同一个远程API执行某种提取.它还尝试在解析API响应时执行"upsert".
问题:如果主机应用程序和扩展程序同时尝试为同一API实体插入Core Data条目,会发生什么?要了解这是如何产生的,让我们看看upsert的事件序列:
核心数据Upsert序列:
uniqueID等于已解析的唯一ID.uniqueID属性设置为已解析的uniqueID.问题详情
假设主机应用程序和扩展程序同时独立地解析同一API实体的API响应.如果主机应用程序和扩展程序在它们中的任何一个完成步骤4之前到达步骤3,则它们都将尝试为相同的唯一ID插入新的核心数据条目.当他们到达步骤4并调用save:他们各自的托管对象上下文时,Core Data将很乐意创建重复的条目.
据我所知,Core Data没有任何方法可以将属性标记为唯一.我需要一个等同于SQLite INSERT OR IGNORE+ UPDATE组合的核心数据..或者我需要一种方法来"锁定"持久存储的SQLite后备存储,这听起来像是一个麻烦的方法.
对iOS 8扩展引入的这个相当新颖的问题有一个已知的方法吗?
在WatchKit开发人员指南中,有关于如何呈现自定义通知的说明,它还说:
应用不需要执行任何操作来支持通知.系统提供默认通知界面,显示通知中的警报消息.但是,应用程序可以自定义通知界面,并包括自定义图形,内容和品牌.
我可以获取本地通知以在手机上触发横幅提醒,但WatchKit应用程序上不会发生这些通知.我尝试使用所有目标进行调试:
即使手机应用程序在后台,当收到本地通知时似乎都没有触发.我也通过模拟在后台收到的远程通知来尝试这个.
我希望我不必直接调用watchKit的控制器本地/远程通知处理程序.
我已经看过关于在主机应用和应用扩展之间共享NSUserDefaults数据的所有其他帖子,但我仍然无法工作.以下是我所做的一切:
毕竟,这段代码仍然不起作用:
// in the host app
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
[testDefaults setObject:@"TEST" forKey:@"foo"];
[testDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)
然后:
// in the extension
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
NSLog(@"%@", [testDefaults objectForKey:@"foo"]);
Run Code Online (Sandbox Code Playgroud)
这导致:
(null)
Run Code Online (Sandbox Code Playgroud)
当我查看Xcode首选项时,我注意到这些图标,其中没有一个具有"App Group"图标:

但正如我之前所说,我在设置应用程序组后清除了我的钥匙串,证书和配置文件.因此,如果这实际上是问题,我如何将权利添加到配置文件?
我错过了什么?我是新鲜的想法.
救命?
编辑:访问组正在我的今日和Safari扩展中工作,而不是在WatchKit扩展中.我不知道为什么,并且所有构建设置似乎都以相同的方式配置.
编辑2:对于那些坚持我的功能设置不正确的人,这里有一个截图: