讀了文檔中關於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