读了文档中关于NSSet
它说:谓词是在NSSet中查找对象的最有效方法吗?
您可以使用组来替代阵列当一个对象 是否包含在集 元素的顺序不是重要的测试和性能考虑。
这正是我需要的,因为性能对我来说非常重要。
所以我重写了最终会在NSSet中填充的类中的哈希值。
- (NSUInteger)hash
{
return [[self recordDate] hash];
}
换句话说,recordDate在我的情况下总是唯一的,我期望在这里有独特的哈希值。
根据文档,似乎我可以在NSSet/NSMutableSet中查找对象的唯一方法是通过谓词。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordDate == %@", recordDate];
NSSet *objectsWithDesiredWeek = [mySet filteredSetUsingPredicate:predicate];
我不确定,如果我不俯视的东西。这是在NSSet中查找对象的最有效方法吗?有没有像键/值?
如果你想要一个关联容器,你可以使用'NSDictionary'。说实话,我不相信通过谓词查找一套物品是有效的。谓词不仅需要解释某种“程序”(类似于正则表达式),而且时间复杂度也很可能是O(n)。也就是说,谓词需要应用于所有对象,直到找到为止。 – CouchDeveloper
您可能想询问您的问题,而不是您想象中的零件解决方案。 – Wain
你也可以使用objectsPassingTest:找到你想要的东西。我不知道这是否更有效率。 – rdelmar