0

我的 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 是一个。请指导..

4

5 回答 5

4

您可以使用 NSSet。来自 Apple 的文档: NSSet 为不同对象的静态集声明了编程接口。像这样:

NSSet *mySet = [NSSet setWithArray:array];

或者:

NSSet *mySet = [NSSet alloc]initWithArray:array];

(为完整性而编辑)然后:

array = [mySet allObjects]; //now you can continue using the array as previously
于 2012-07-31T11:37:40.957 回答
2

我认为最优雅的解决方案是@distinctUnionOfObjects在数组上使用运算符。

基本上,

NSArray *unique = [jsonarray valueForKeyPath: @"@distinctUnionOfObjects.ID"];

应该返回一个唯一数字的数组。

于 2012-07-31T14:11:27.207 回答
1

好吧,您必须将要在 UITableView 中显示的数据存储在数据 NSMutableArray 中。所以你可以遍历这个 json 数组并尝试将对象添加到数据数组中。每次要添加新项目时,都使用以下代码:

- (void) addObjectToData: (NSObject *) obj {
     if(![data concontainsObject:obj]){
        [data addObject:obj];
     }
}
于 2012-07-31T11:38:12.350 回答
1

您可以暂时使用NSSet不允许重复的对象:

NSSet *set = [NSSet setWithArray:array];

然后遍历集合的内容。

于 2012-07-31T11:39:29.893 回答
1

user523234 已经发布了很好的答案,但您也可以尝试以下操作:

 for(int data in array)
 {
    if(![newArray containsObject:data])
    {
        [newArray addObject:data];
    }
 }

这应该有效。

于 2012-07-31T11:44:54.650 回答