سؤال

لدي nsdictionary حيث كل نقطة رئيسية إلى صفيف. أريد لاحقا دمج جميع القيم في صفيف واحد. هل هناك طريقة لاستخدام API للقيام بشيء أكثر كفاءة مما يقول:

NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
   start inner loop on objects in anArray
     add objectAtIndex to newArray
هل كانت مفيدة؟

المحلول

مجرد استخدام [newArray addObjectsFromArray:anArray];

نصائح أخرى

هناك بعض الارتباك في إجابة بن غوتليب أعلاه. لتوضيح، إنه يقترح باستخدام addobjectsfromarray. بدلا من الحلقة الداخلية، في حين أن كووكو مرتبك لأنه يعتقد أنه يقترح كبديل لجميع الحلقات. (إذا قمت بذلك، فستترك بالفعل بمجموعة غير مستندة من الصفائف حسب اعتراضه.)

فيما يلي حل أنيق بشكل معقول لا يتطلب أي حلقات صريحة:

NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];

BTW هذا الرمز سوف يترك التكرارات في الصفيف المسطح. إذا كنت ترغب في إزالة التكرارات، استخدم distinctunionofarrays. بدلا من Unionofarrays..

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