سؤال

ما الفرق بين الحصول على عناصر من البيانات الأساسية مع FetchResultController أو ManagedObjectContext ؟؟

1) FetchResultController

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext: managedObjectContext]]; 

NSSortDescriptor *sortDescriptorNameAscending = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorNameAscending,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorNameAscending release];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Lists"]; 

2) managedObjectContext

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Item"  inManagedObjectContext:managedObjectContext]]; 
NSError *error = nil; 
NSArray *items = [ managedObjectContext executeFetchRequest:request error:&error]; 
هل كانت مفيدة؟

المحلول

النقطة وراء استخدام NSFetchedResultsController بدلاً من مجرد أ NSFetchRequest هو مراقبة بياناتك وطرق الراحة عند العمل مع الأقسام.

عند التعامل مع أ NSFetchRequest يجب عليك تحديد الأقسام بنفسك وتحتاج إلى إعادة صياغة بياناتك عندما يتغير شيء ما.

عند التعامل مع NSFetchedResultsController, ، سيحدد أقسامك ، وذاكرة التخزين المؤقت للنتائج (تقديم طلب ثانٍ لتلك البيانات بالقرب من الفوري) ، وتوفير طرق الراحة لـ NstableView. أخيرًا ، عندما تتغير بياناتك ، NSFetchedResultsController سوف يعلمك من خلال مندوبيها.

البيانات الداخلية لكليهما ستكون هي نفسها. إنها تدير حالة تلك البيانات التي هي الفرق.

نصائح أخرى

ال NSFetchedResultsController سيخبرك الكائن متى تتغير كائنات الاستعلام. ما عليك سوى توفير كائن مندوب لتلقي المكالمات (انظر المستند لـ NSFetchedResultsControllerDelegate بروتوكول). كما يوفر لك إدارة قسم مفيدة إذا كنت ترغب في عرض البيانات في عرض الجدول.

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