我有两个数组,一个NSMutableArray和一个NSArray.NSMutableArray是"store",它存储来自NSArrays源的结果.每隔5分钟,就会出现一个新的NSArray,需要对数据进行过滤和排序.
按日期排序非常简单,因此我设法按NSDate排序NSArray.不需要对另一个数组进行排序,因为它只会导致用户混淆.
我想做什么:NSArray有很多不同的对象都响应 - [对象名],返回一个NSString.NSArray需要合并到 NSMutableArray中,只需添加新对象.
合并本身没有问题,但性能是.NSMutableArray最多可包含3000个项目,NSArray最多可包含250个项目,但通常只有5个或6个项目必须合并到NSMutableArray中.
所以,我的问题是:如何在Objective-C中合并两个数组,过滤重复项,而不迭代(250*3000)次?
汤姆
编辑以澄清某些
内容"重复"对象是与用户重复但不与代码重复的对象.它们具有相同的名称,但不是相同的地址.
更多说明: @"value" != @"value" // true
End*_*mic 10
被name
存储在阵列中的对象的属性?如果是这样,你可以使用一个相当简单的NSPredicate来过滤不可变数组,然后再将结果添加到可变数组中.这是一个例子:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NONE name == %@.name", mutableArray];
resultsArray = [immutableArray filteredArrayUsingPredicate:predicate];
[mutableArray addObjectsFromArray:immutableArray];
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
[mutable removeObjectsInArray:newArray];
[mutable addObjectsFromArray:newArray];
Run Code Online (Sandbox Code Playgroud)
它不是最胖的,但很容易实现:)
归档时间: |
|
查看次数: |
7986 次 |
最近记录: |