قم بفرز مجموعة من الكائنات المخصصة من قبل القاموس المضمن في كائن مخصص: كيف؟

StackOverflow https://stackoverflow.com/questions/1851182

سؤال

لدي مجموعة من الكائنات المخصصة. الكائنات تتضمن القاموس. شيء من هذا القبيل:

CustomDataModel *dataModel;

dataModel.NSString
dataModel.NSDictionary
dataModel.image

أرغب في الترتيب حسب أحد الكائنات في القاموس:

dataModel.NSDictionary ObjectWithkey=@"Name"

يتم تحميل Datamodel في NSArray. أريد الآن فرز مفتاح "الاسم" في القاموس. هل هذا شيء يمكن أن يتعامل مع nssortdesortor؟ الفرز الأساسي يعمل بشكل جيد، فقط لم أحسب هذا واحد بعد ...

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

المحلول

سؤالك ليس واضحا تماما بالنسبة لي، ولكن يمكنك تجربة شيء مثل هذا على NSArray الخاص بك:

- (NSArray *)sortedItems:(NSArray*)items;
{
    NSSortDescriptor *sortNameDescriptor = 
                        [[[NSSortDescriptor alloc] 
                          initWithKey:@"Name" ascending:NO] 
                          autorelease];

    NSArray *sortDescriptors = 
                        [[[NSArray alloc] 
                          initWithObjects:sortNameDescriptor, nil] 
                          autorelease];

    return [items sortedArrayUsingDescriptors:sortDescriptors];
}

نصائح أخرى

//Sort an array which holds different dictionries - STRING BASED   - Declare it in the .h
    - (NSArray *)sortStringsBasedOnTheGivenField:(id)dictionaryKey arrayToSort:(NSMutableArray *)arrayToHoldTemp ascending:(BOOL)ascending {
        NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:dictionaryKey ascending:ascending selector:@selector(localizedCaseInsensitiveCompare:)] ;
        NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor];
        [arrayToHoldTemp sortUsingDescriptors:descriptors];
        [nameDescriptor release];
        return arrayToHoldTemp;
    }

الاستعمال:

self.mainArrayForData = [NSArray arrayWithArray:[self sortNumbersBasedOnTheGivenField:@"Name" arrayToSort:arrayWhichContainsYourDictionries ascending:YES]];

الطريقة المذكورة أعلاه جيدة للحصول على صفيف يحمل القواميس

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