دمج NSARRAYS في الهدف
-
16-09-2019 - |
سؤال
لدي 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..
لا تنتمي إلى StackOverflow