2

今、私はこことグーグルでこれを調べました、そしてそれは誰もがNSSet重複を取り除くために使うようです。これはすばらしいことですが、この方法では並べ替えも削除されるようです。

1)NSSetをアルファベット順に並べ替える方法はありますか?NSMutableArray2)ループ内またはループ外の重複を削除するためのより良い方法。ファイルforからそれらを読み取ることにより、それらを配列に追加し.csvます。

ありがとう:)

4

3 に答える 3

3

を使用したいと思いますNSOrderedSet。これに関するドキュメントは次のとおりです。

http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

于 2013-01-28T19:15:00.470 に答える
1

NSOrderedSet配列から * を作成できます。using+orderedSetWithArray:は、配列の既存の順序を保持します。まだ正しい順序になっていない場合、セットを直接ソートすることはできないため、順序付きセットを使用する意味はほとんどありませんが、 、またはさらに良いを使用して、通常の配列を簡単に構築し、それNSSetを別の配列にソートできます。のソート方法のいずれか。-sortedArrayUsingDescriptor:allObjectsNSArray

一方で (これについて不快なコメントが寄せられる可能性もありますが...)、NSArrayとは同じハッシュ テーブル機能の上に構築されてNSSetいるように見えるため、次のようにすることができます。

id newObj = // Acquire new object from wherever
while( newObj ){
    if( ![arrayImConstructing containsObject:newObj] ){
        [arrayImConstructing addObject:newObj]
    }
    newObj = // Acquire next object
}

これは基本的に、順序付きセットを作成するときに行う必要があることであり、配列が十分に小さい ( に入れている場合UIPicker) ため、パフォーマンスの違いにまったく気付かない可能性が非常に高くなります。それでも、2つを測定してから決定します。


* NSOrderedSetiOS > 5.0 (または OS X > 10.7) で利用できます。

于 2013-01-28T20:07:37.723 に答える
0

NSOrderedSet は、セットでの順序付けを提供します。

于 2013-01-28T19:15:43.983 に答える