gpt4 book ai didi

ios - EKEventStore eventsMatchingPredicate 赋值

转载 作者:行者123 更新时间:2023-11-29 13:27:04 35 4
gpt4 key购买 nike

我在存储来自 EKEventStore 查询的事件时遇到问题。例如,当使用以下代码时,events 始终为 nil:

__block NSArray *events = [[NSArray alloc] init];

if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (granted)
events = [eventStore eventsMatchingPredicate:predicate];
});
}];
}

我知道 [eventStore eventsMatchingPredicate:predicate] 正在返回事件,就像我将 NSLog 放入 block 中一样,然后我可以看到事件详细信息。保留结果似乎有问题。如您所见,我已尝试在主线程上执行此操作,但无济于事。

我正在使用 ARC,这可能会有所不同。

谢谢

最佳答案

当然.. 我的意思是我在我的 requestAccessToEntity block 之后做“返回事件”。这是不好的,因为它会立即返回,因为 requestAccessToEntity block 是异步的,需要很短的时间来执行该操作。所以我创建了一个委托(delegate),并在 requestAccessToEntity 完成后调用此委托(delegate),以便它在完成时通知我,并在委托(delegate)调用中传回数组。类似这样的事情:

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
if (delegate != nil && [delegate respondsToSelector:@selector(todaysEventsComplete:)]) {
events = [eventStore eventsMatchingPredicate:predicate];
dispatch_async(dispatch_get_main_queue(), ^{
[delegate todaysEventsComplete:events];
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
[UIAlertView alertViewWithTitle:nil message:@"You have denied access to your calendar for this app"];
});
}
}
}];

关于ios - EKEventStore eventsMatchingPredicate 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867535/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com