Hen*_*nry 16 objective-c nsnumber nsmutablearray nspredicate
我有一个NSMutableArray的NSNumbers.基本上我只是想检查NSNumbers数组中是否有任何值=某个值.
我可以遍历数组,逐个检查,这绝不是最佳选择.
我也试过并且使用失败containsObject,因为这只有在id相同的情况下才有效.
我读了一些关于NSPredicate这个问题的解决方案,但我不确定如何使用它NSArray.
任何答案都表示赞赏.
谢谢
Tie*_*eme 20
受伯恩斯坦的启发,我查了一些关于这个的信息,我找到了 CFArrayContainsValue
BOOL CFArrayContainsValue(CFArrayRef theArray, CFRange range, const void *value);
Run Code Online (Sandbox Code Playgroud)
例:
NSArray *numbers;
NSNumber *value;
BOOL found = CFArrayContainsValue ( (__bridge CFArrayRef)numbers,
CFRangeMake(0, numbers.count),
(CFNumberRef)value );
Run Code Online (Sandbox Code Playgroud)
像魅力一样,真的很快!
Don*_*nit 12
NSPredicate *valuePredicate=[NSPredicate predicateWithFormat:@"self.intValue == %d",[myValueNumber intValue]];
if ([[numbersArray filteredArrayUsingPredicate:valuePredicate] count]!=0) {
// FOUND
}
else {
//NOT FOUND
}
Run Code Online (Sandbox Code Playgroud)
迭代数组是最好的方法.这正是该containsObject方法在幕后所做的事情.你可以对数组进行排序,但这在效率方面不会给你太多.
如果您希望能够比O(n)更快地查找值,NSArray/NSMutableArray则可能不是适合您的数据结构.
| 归档时间: |
|
| 查看次数: |
11195 次 |
| 最近记录: |