使用新的iOS 9 Beta 5并观看os 2固件,我遇到了一些非常奇怪的事情。
我正在尝试使用此代码,如果用户尚未授予访问权限,则应该提出要求访问日历的权限的警报。问题是即使用户没有访问日历,警报也不会出现:
if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
NSLog(@"Monkey");
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
NSLog(@"Banana");
/*
more code here
*/
}
}
在代码中添加断点后,我推断出这一行是问题所在:
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
此行之后的任何内容都将永远不会执行,因此警报永远不会显示。但是,如果我在模拟器上运行watchkit App而不是我自己的手表和iPhone,那么同样的线路也可以工作。虽然我有granted
的if-else语句,但该语句不会执行,因为{
之后的任何内容都不会执行。这意味着日志不会显示Banana
,只会显示Monkey
。在我自己的设备上测试时会发生这种情况。在模拟器上,两者都会显示,并且还会出现对日历提醒的访问权。
另外需要注意的是,当iOS 9 Beta 3发布时,同样的代码在我自己的设备和模拟器上运行得非常好。大约一周前,当我将手机更新到iOS 9 Beta 5时,我遇到了这个问题,所以我有理由相信它可能是某种类型的错误。
答案 0 :(得分:0)
我解决了我的问题。显然我忘了在我的苹果手表上做软件更新。更新手表会显示隐私警报,现在我可以在手表上抓取日历事件。