2012-07-31 48 views
0

我的數組元素看起來像這樣如何避免NSArray的重複元素,並打印在表格視圖單元格

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.Here是我的代碼,

NSArray *array=[jsonarray valueForKey:@"ID"]; 
cell.textLabel.text=[array objectAtIndex:indexPath.row] ; 

這裏我jsonarray有ID之間的各個領域是one.Guidance請..

+0

[在Objective-C中從NSMutableArray中刪除重複值的最佳方法?](http://stackoverflow.com/questions/1025674/the-best-way-to-remove-duplicate-values-from -smutablearray-in-objective-c) – JosephH 2012-07-31 19:18:37

回答

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 
+0

雅它解決了我的問題,但如果我試圖在tableviewcell中打印我沒有越來越.. NSArray * array = [jsonarray valueForKey:@「ID」]; NSSet * mySet = [NSSet setWithArray:array]; NSLog(@「%@」,mySet); cell.textLabel.text = [mySet objectAtIndex:indexPath.row]; – Dany 2012-07-31 11:52:01

+0

你可以嘗試我的下面的答案通過newArray到tableview – 2012-07-31 11:54:45

+0

@Dany:看到添加。 – user523234 2012-07-31 16:28:19

1

那麼你一定要保存你想在你的UITableView的地方顯示的數據,例如在數據NSMutableArray中。所以你可以遍歷這個json數組並嘗試將對象添加到數據數組中。要添加一個新的項目每一次,你可以使用下面的代碼:

- (void) addObjectToData: (NSObject *) obj { 
    if(![data concontainsObject:obj]){ 
     [data addObject:obj]; 
    } 
} 
1

你可以暫時使用NSSet對象,不允許重複:

NSSet *set = [NSSet setWithArray:array]; 

然後遍歷的內容組。

1

user523234已經貼好答案,但你也可以嘗試以下操作:

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

這應該工作。

+0

我試過了,但我得到了Signal sigabart問題.. – Dany 2012-07-31 12:50:53

2

我認爲最優雅的解決方案是在陣列上使用@distinctUnionOfObjects運算符。

基本上,

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

應返回唯一編號的數組。