كيف يمكنني الوصول إلى مجموعات فرعية معينة من NSDictionary كبير في الكاكاو؟

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

  •  22-07-2019
  •  | 
  •  

سؤال

ولدي الكائن NSDictionary واحد والذي يحتوي على عدد كبير من الكائنات المخصصة. سوف الكائنات تكون إما من الدرجة B أو من الفئة C، وكلاهما يرث من الفئة A. إذا الكائنات من نوع B، سيكون لديهم علم الداخلي (kindOfCIsh) التي سيتم استخدامها لتجميع المستقبل.

وكيف يمكنني، في أوقات مختلفة في برنامجي، والحصول على NSDictionary (أو NSArray) الذي يحتوي على مجموعات مختلفة من هذه الكائنات؟ في حالة واحدة، وسوف ترغب كل من B، ولكن مرة اخرى وسوف يرغب كافة الكائنات C، بالإضافة إلى الكائنات B التي ترضي (kindOfCIsh == صحيح).

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

وهو محل تقدير أي مساعدة.

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

المحلول

[[myDictionary allValues] filteredArrayUsingPredicate: سابق التحديد]؛

نصائح أخرى

ويمكنك استخدام فئات

ورمز هو شيء من هذا القبيل

@interface NSDictionary (dictionaryForClass)

  -(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;

@end

@implementation NSDictionary (dictionaryForClass)

-(NSMutableDictionary *) dictionaryWithObjectsKindOfClass:(Class)myClass;
{
  NSMutableDictionary *ret = [[[NSMutableDictionary alloc] init] autorelease];

  for (id object in self) {
    if ([object isKindOfClass:myClass]) {
       [ret addObject:object];
    }  
  }  
  return ret;

}

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