gpt4 book ai didi

ios - 在没有 for 循环的情况下在 scheduledLocalNotifications 数组中查找 UILocalNotification?

转载 作者:可可西里 更新时间:2023-11-01 05:15:00 25 4
gpt4 key购买 nike

目前,我正在遍历所有预定的本地通知,以根据 userInfo 字典对象中的值查找“匹配项”。当我设置了 30 多个本地通知时,这似乎非常慢。有没有办法在不遍历数组的情况下访问单个本地通知?

这是我的:

NSArray *notificationArray = [[UIApplication sharedApplication]     scheduledLocalNotifications];
UILocalNotification *row = nil;
for (row in notificationArray) {
NSDictionary *userInfo = row.userInfo;
NSString *identifier = [userInfo valueForKey:@"movieTitle"];
NSDate *currentAlarmDateTime = row.fireDate;
if([identifier isEqualToString:myLookUpName]) {
NSLog(@"Found a match!");
}
}

这是我想要的:

NSArray *notificationArray = [[UIApplication sharedApplication]     scheduledLocalNotifications];
UILocalNotification *row = " The row in notificationArray where [userInfo valueForKey:@"movieTitle"]=myLookUpName" ;

最佳答案

你也许可以为此使用谓词,但我还没有测试过:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userInfo.movieTitle = %@", myLookUpName];

然后使用该谓词过滤数组并获取第一个元素:

UILocalNotification *row = [[notificationArray filteredArrayUsingPredicate:predicate]objectAtIndex:0];

同样,这是未经测试的,可能行不通。

编辑

如果这不起作用,您可以使用测试 block :

UILocalNotification *row = [[notificationArray objectsAtIndexes:[notificationArray indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
return [[[obj userInfo]valueForKey:@"movieTitle"] isEqualToString:myLookUpName];
}]]objectAtIndex:0];

关于ios - 在没有 for 循环的情况下在 scheduledLocalNotifications 数组中查找 UILocalNotification?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164473/

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