سؤال

هل هناك طريقة أفضل مما هو عليه المقترحة هنا لإنشاء تعيين واحد إلى واحد بين خلية عرض الجدول NSIndexPath وفريدة من نوعها NSUInteger أو int, ، من أجل إنشاء فريدة من نوعها tag قيمة العقار للحصول على القطعة في الخلية (أ UIProgressView)?

الرابط يضيف الأساليب من خلال UIKit تمديد الفئة التي تحول بين NSIndexPath و int, ، لكنهم يعملون فقط لمدة تقل عن عدد معين من الصفوف.

منحت، قد لا أكون في هذا الحد، لكنني أتساءل عما إذا كان هناك رسم خرائط أن شخصا ما قد توصل إلى ذلك يمكن ضمان العمل لأي عدد من الصفوف.

هل كانت مفيدة؟

المحلول

لا، هناك حقا ليست طريقة مضمونة للعمل من أجل أي عدد من الصفوف. إذا كان لديك طاولة مع قسمين، فكل منها بها 3 مليارات صفوف، فلا توجد طريقة لتعيين تلك 6 مليارات دولار NSINDEXPASS المحتملة في NSINTEGERS 32 بت.

(إذا كنت تقوم ببناء تطبيق 64 بت، فإن نفس الشيء صحيح، لكن يجب أن تكون الأرقام أكبر 4 مليارات مرة في المثال.)

يستخدمون الحد من 10000 صف لكل قسم في المثال الذي ترتبط به؛ إذا كنت قلقا بجدية، فقد يكون لديك المزيد من الصفوف أكثر من ذلك، فيمكنك استخدام ثابت أكبر، أي أنه يمكنك استخدام 1،000،000 كحد أقصى لعدد الصفوف إذا كنت تعرف أنك لن يكون لديك أكثر من 4000 أقسام.

لاحظ أن "مبرمج حقيقي" من المفترض أن يستخدم 65536 كثبات، بالطبع.

نصائح أخرى

إذا كان لدي حاجة للقيام بذلك، فسوف أغير مسار القسم إلى نصف بطول 32 بت، وتحويل جزء الصف إلى الآخر. نعم هذا يعني أنه لا يمكن أن يكون لديك أكثر من 65535 عنصرا على التوالي (في كسرها، افترضت إنتهية غير موقعة لأن الصف / القسم لن يكون سالبا أبدا) ولكني سآخذ حد كبير أكبر بكثير مما سأحتاج إليه ثابت ماجيك في أي يوم.

بالإضافة إلى أنها أرخص حسابيا.

عادة في هذا الوضع على الرغم من أن قمت بإعداد وحدة تحكم عرض الجدول الخاص بي كمندوب لكل خلية، ويمكن للخلية استدعاء وحدة التحكم مع أي تغييرات مع بعض القيمة الرئيسية المستخدمة لإنشاء الخلية - بعد كل شيء عند ملء خلية لك تعرف كيفية الوصول إلى مجموعة البيانات الخاصة بك لسحب القيم. هيك، يمكنك حتى ببساطة تخزين الفهرسة في الخلية ويمكن أن تتصل مرة أخرى بهذا. السبب في أنني لن أستخدم نهج الفهروسمة أو المرء السابق الذي ينطوي على تسطيح nsindexpath في علامة هو أنه إذا كنت تبدأ من أي وقت مضى تغيير الصفوف ديناميكيا، فقد تصبح القيم غير محورية بين NSNDExPath الذي قمت بإنشاء خلية ذات قيمة البيانات الحالية. من الأفضل الكثير أن يكون لديك نوع من المفتاح الذي سيعود إليك دائما إلى البيانات المناسبة بشكل منطقي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top