سؤال

لدي كائن نموذج يمتد من nsobject يسمى العمود. العمود لديه حقلين، خصائص وبيانات. الخصائص هي nsdictionary التي تخزن أزواج المفتاح / القيمة التعسفي أثناء البيانات هي صفيف.

تأتي الأعمدة في صفائف وأحتاج إلى فرزها بالقيمة التي أعرفها ستكون دائما في خصائص، قيمة مع الترتيب الرئيسي_position.

أنا أستخدم الكود التالي للفرز ولكنه فشل دائما لأنه لا يوجد "Ordinal_position" في كائن النموذج، فقط في خصائص كائن النموذج:

NSArray *unsortedArray = [resultStore allValues];
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"ordinal_position" ascending:YES] autorelease];

NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

كيف يمكنني معرفة NSSortDescriptor للبحث عن العقار في القاموس في كائن النموذج؟

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

المحلول

يجب عليك تحديد المحدد الخاص بك الذي يعود nscomparisonresult. وتنفيذها:

- (NSComparisonResult)compareByProperty:(Column *)aColumn {
    id thisValue = [self valueForKey:@"ordinal_position"];
    id otherValue = [self valueForKey:@"ordinal_position"];

    return [thisValue compare:otherValue]; // Replace to suit your logic
}

ثم استخدم طريقة NSArray sortedArrayUsingSelector::

NSArray *sortedArray = [unsortedArray sortedArrayUsingSelector:@selector(compareByProperty:)];

لاحظ أن طريقة المقارنة الخاصة بك يجب أن توجد على كائن النموذج الخاص بك، وليس على الفئة التي تدعوها من - IDIOM هو أنك تقارن بعض كائن النموذج المعطى (self) إلى كائن نموذج آخر (aColumn) من داخل الكائن الأول.

نصائح أخرى

استخدام keypath:

@ "mydictionary.ordinal_position"

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