سؤال

في عرض مجموعتي أحتاج إلى إنشاء فهرس لكل عنصر.مع إعادة ترتيب العناصر، أحتاج إلى تحديث هذا الفهرس بموقعه الجديد.

البيانات هي كيانات البيانات الأساسية في NSArrayController مُدار.أقرب ما توصلت إليه من حل ممكن هو تنفيذ هذه الطريقة على فئة الكيان ثم استخدامها ممثلةObject.dynamicIndex لربطه بواجهة المستخدم.

- (NSNumber *) dynamicIndex
{
    NSInteger r = [[[[self managedObjectContext] registeredObjects] allObjects] indexOfObject:self];
    NSNumber *result = [NSNumber numberWithInt:r];
    return result;
}

هذا الحل غير واضح في أحسن الأحوال، وغير فعال لأنه لا يعكس بالضرورة الترتيب في عرض المجموعة.

هل لدى أي شخص نموذج/آلية لإنشاء أو استرداد فهارس العناصر في NCollectionView؟

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

المحلول

أولاً ، تأكد من فهم الفرق بين (واستخدام المصطلحات بشكل صحيح) "الكيان" و "مثيل". إنه يجعل كل الفرق في توصيل مشاكلك/حلولك مع الآخرين.

ثانية:لا تقلق بشأن NCollectionViewItems ...تقلق بشأن "الكائن الممثل" لكل فرد، والذي يتم الاحتفاظ به في بعض الحاويات.

ثالث:هل تريد أن يكون ترتيب العرض سمة ثابتة لكيانك أم أنك تحتاج فقط إلى معرفة الموضع الذي يوجد به العنصر في الوقت الحالي، بغض النظر عما قد يكون عليه لاحقًا؟سؤال مهم.

رابعا:لا تمنحك البيانات الأساسية مفهوم المجموعات المرتبة.هذا لدعم أنواع المتاجر مثل NSSQLiteStoreType، حيث قد ترغب فقط في الخطأ في عدد قليل من العناصر (أو عنصر واحد) دون تحميل القائمة بأكملها.لذلك، أنت وحدك إذا كنت تريد ترتيب فرز مستمر.للقيام بذلك، ما عليك سوى إضافة سمة إلى الكيان الخاص بك تسمى "sortOrder" وجعلها نوع رقم.

خامسا:نظرًا لمشكلة "عدم وجود مجموعات مرتبة" أعلاه، فإن محاولتك العثور على فهرس مثيل معين لكيانك من مصفوفة، تم إنشاؤها من مجموعة، والتي حدث بها خطأ بترتيب غير محدد، محكوم عليها بالفشل.

السادس:نظرًا لأنك تستخدم وحدة تحكم المصفوفة، فستحتاج إلى تعيين واصفات الفرز الخاصة بها.ستحتاج إلى استخدام مفتاح "sortOrder" الخاص بك.بهذه الطريقة، سيتم دائمًا الاحتفاظ بمثيلاتك التي تم جلبها مرتبة حسب "sortOrder".

سابعاً وأخيراً:إذا كنت تحاول الحصول على فهرس لأي كائنات في ملفك وحدات تحكم المصفوفة مجموعة/مصفوفة من الكائنات، فستحتاج إلى سؤالها عن -arrangedObjects، بحيث تحصل على فهرس الكائن في مرتبة جمع عناصر التحكم في وحدة تحكم الصفيف.

امل ان يساعد.

التحديث للأسد (10.7)

أما بالنسبة لنقطتي السادسة:إذا كنت تستهدف الإصدار 10.7 وما فوق في تطبيقك، فإن [NSManagedObject يمنحك الآن علاقات مرتبة.] [1] استخدم -mutableOrderedSetValueForKey:و -mutableOrderedSetValueForKey:لتعيين واسترجاع NSOrderedSets.ياي!

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