我从sqlite文件中访问了数据作为NSMutableArray [model_Array],其中我有重复的信息[两个/三]所以我想删除它,我试图通过下面给出的两个不同的想法将MutableArray分配给另一个NSMutableArray [allItems]
AppDelegate *readTheDatabase = (AppDelegate *)[[UIApplication sharedApplication] delegate];
allItems = [[NSMutableArray alloc] initWithArray:readTheDatabase.model_Array];
NSSet *uniqueItems;
uniqueItems = [NSSet setWithArray:allItems];
或
NSMutableArray *uniqueItems = [NSMutableArray array];
for (id item in allItems)
if (![uniqueItems containsObject:item])
[uniqueItems addObject:item];
但无法删除重复数据。请任何人帮助,并建议我克服这个问题。提前谢谢。
答案 0 :(得分:3)
对于isEqual:
方法,数组中的对象显然不会返回true。
数组包含哪种对象?
我假设它是一些代表数据库中数据的自定义模型类。
您应该查看NSObject
以及isEqual:
和hash:
方法的文档。
您将学习如何表达两个对象何时相等,这就是NSArray
和NSSet
等确定对象是否已包含在集合中的方式。
答案 1 :(得分:1)
如果您从数据库查询中获得重复项,我建议重新构造查询,以便它不会产生重复项。即。使用SELECT DISTINCT ...
代替SELECT ...
。
答案 2 :(得分:0)
如果你使用NSSet
然后转到NSArray
- 否则会导致崩溃,因为它会在NSSet
,而不是NSSArray
。
NSSet *uniqueItems= [NSSet setWithArray:YourArray];
NSArray *array = [[NSArray alloc]initWithArray:[uniqueItems allObjects]];
for (int i=0; i<[array count]; i++) {
NSLog(@"The Given Array is %@",[array objectAtIndex:i]);
}
祝你好运,做起来很简单.......