My Array元素如下所示
150,
150,
150,
571,
571,
571,
692,
692,
692,
123,
123,
123,
144,
144,
144,
147,
147,
147,
155,
155,
155,
542,
542,
542,
548,
548,
548,
551,
551,
551
我需要显示所有元素但不是重复相同的元素,并且必须在UItableView中打印。这是我的代码,
NSArray *array=[jsonarray valueForKey:@"ID"];
cell.textLabel.text=[array objectAtIndex:indexPath.row] ;
这里我的jsonarray有各种领域,其中ID是一个。指导请..
答案 0 :(得分:4)
您可以使用NSSet。从Apple的doc:NSSet声明了静态不同对象集的编程接口。像这样:
NSSet *mySet = [NSSet setWithArray:array];
或者:
NSSet *mySet = [NSSet alloc]initWithArray:array];
(编辑完整性)然后:
array = [mySet allObjects]; //now you can continue using the array as previously
答案 1 :(得分:2)
我认为最优雅的解决方案是在阵列上使用@distinctUnionOfObjects
运算符。
基本上,
NSArray *unique = [jsonarray valueForKeyPath: @"@distinctUnionOfObjects.ID"];
应该返回一个唯一数字数组。
答案 2 :(得分:1)
嗯,你必须在你的UITableView中存储你想要显示的数据,例如在NSMutableArray数据中。因此,您可以遍历此json数组并尝试将对象添加到数据数组中。每次要添加新项目时,都使用以下代码:
- (void) addObjectToData: (NSObject *) obj {
if(![data concontainsObject:obj]){
[data addObject:obj];
}
}
答案 3 :(得分:1)
您可以暂时使用不允许重复的NSSet
对象:
NSSet *set = [NSSet setWithArray:array];
然后迭代集合的内容。
答案 4 :(得分:1)
user523234已经发布了很好的答案,但您也可以尝试以下内容:
for(int data in array)
{
if(![newArray containsObject:data])
{
[newArray addObject:data];
}
}
这应该有效。