我有一个UILocalNotification
s 数组。在每个通知中都有一个userInfo
属性是NSDictionary
. 在 userInfo 我设置了一个键@"ID"
,值是一个唯一的 ID。
所以我想要做的是检查通知数组是否有任何 userInfo 属性具有@"test"
key 的值,@"ID"
然后返回YES
else NO
。我知道如何使用 for 循环来实现这一点,但我想知道是否有更优雅的方式来做到这一点。
我有一个UILocalNotification
s 数组。在每个通知中都有一个userInfo
属性是NSDictionary
. 在 userInfo 我设置了一个键@"ID"
,值是一个唯一的 ID。
所以我想要做的是检查通知数组是否有任何 userInfo 属性具有@"test"
key 的值,@"ID"
然后返回YES
else NO
。我知道如何使用 for 循环来实现这一点,但我想知道是否有更优雅的方式来做到这一点。
我猜你不太可能比基本的快速枚举在性能方面做得更好——也许使用“带选项枚举”方法之一,允许并发——但肯定有更优雅的方法来编写你的内容重新尝试做:
[[array valueForKeyPath:@"userInfo.ID"] containsObject:@"test"];
您可以使用-[NSArray indexesOfObjectsPassingTest:]
which 接受一个为匹配对象返回 YES 的块,否则为 NO:
NSArray *array = ...;
NSIndexSet *matchingIndexes = [array indexesOfObjectsPassingTest:^BOOL(UILocalNotification *notification, NSUInteger idx, BOOL *stop) {
return [notification.userInfo[@"ID"] isEqualToString:@"test"];
}];
return [matchingIndexes count] != 0;