質問

<のhref =「http://blog.jonmsterling.com/2009/08/19/converting-nsindexpath-to-a-unique-integer-in-uikit.html」であるものよりも良い方法はありますここで提案のrel =「nofollowをnoreferrerは」>セル内のウィジェットのためのユニークなNSIndexPathプロパティ値を作成するために、テーブルビューセルのNSUIntegerとユニークなintまたはtag間の1対1のマッピングを作成するためにを(UIProgressView)?

リンクはUIKitNSIndexPathとの間の変換intカテゴリ拡張を介してメソッドが追加されますが、彼らは唯一の行の特定の数よりも少ないために働きます。

確かに、私はその制限に実行されない場合があり、誰かがその行の任意の数のために働くことを保証することができますを打ち出していることをマッピングがある場合、私は思ったんだけど。

役に立ちましたか?

解決

いいえ、本当に任意の行数のために動作することが保証される方法はありません。あなたは2節、30億行のそれぞれにテーブルを持っている場合は、40億32ビットNSIntegersにそれらの60億件の潜在的NSIndexPathsをマッピングする方法はありません。

(あなたは、64ビットアプリケーションを構築した場合、同じことが真のですが、数字は一例では、別の40億倍の大きなければならないであろう。)

彼らは、あなたがにリンクされている例ではセクションごとに10,000行の制限を使用します。あなたはより多くの行があるかもしれません真剣に心配しているならば、あなたは大きな定数を使用することができ、すなわち、あなたは4,000人以上のセクションを持っていないことを知っている場合は最大行数として1,000,000を使用することができます。

「本当のプログラマは」おそらくもちろん、定数として65536を使用することに注意してください。

他のヒント

私はこれを行う必要があった場合、

私は単に、32ビット整数の半分に区分パスを移動し、他に行部分をシフトします。はい、これはあなたが行に65535個の以上の要素を持っていないことを意味し(行/セクションが負になることはありませんので、それを破壊して、私は、符号なし整数型を仮定)が、私は私が今まで以上、必要となるよりもはるかに大きいと想定上限を取りますよ魔法の定数任意の日。

プラス、それは安く、計算だ。

通常、このような状況で私は、各セルの代理人としての私のテーブルビューコントローラを設定し、セルは、セルを作成するために使用されるいくつかのキー値と一緒にすべての変更と、コントローラコールバックできますが - あなたが移入されたときの後にすべてをセルあなたは値を引き出すために、データセットに到達する方法を知っています。ヘック、あなたも、単にセルにIndexPathを格納することができ、それはそれで戻って呼び出すことができます。私はIndexPathアプローチやタグにNSIndexPathを平坦に関与する前に1を使用しないことの理由は、あなたがこれまでの行を変更し起動すると、動的な値は、あなたが持つセルと現在のデータセットの値を作成しNSndexPath間の非整列になるかもしれないということです。はるかに良い、常に論理的に戻って正しいデータにあなたを取得するキーのいくつかの種類を持ってます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top