วิธีการคืน NSMutableArray จาก NSSet


104

ฉันสามารถที่จะนำเนื้อหาของนั้นNSSetเป็นNSMutableArrayเช่นนี้

NSMutableArray *array = [set allObjects];

คอมไพเลอร์บ่นว่าเพราะ [set allObjects] ส่งคืนNSArraynot an NSMutableArray. ควรแก้ไขอย่างไร?

คำตอบ:


218

เนื่องจาก-allObjectsส่งคืนอาร์เรย์คุณสามารถสร้างเวอร์ชันที่เปลี่ยนแปลงได้ด้วย:

NSMutableArray *array = [NSMutableArray arrayWithArray:[set allObjects]];

หรือหากคุณต้องการจัดการกับความเป็นเจ้าของวัตถุ:

NSMutableArray *array = [[set allObjects] mutableCopy];

7
หมายเหตุ: มีความแตกต่างที่ลึกซึ้งในสองวิธีถ้ามีset nil
Zach Langley

-1

ฉันแก้ไขการหยุดทำงานโดยใช้เมธอด 'addObjectsFromArray' ของ NSMutableArrayเพื่อกำหนดอ็อบเจ็กต์NSSetทั้งหมดให้กับNSMutableArrayเช่น:

[mutableArray addObjectsFromArray:[cg_Schedule.schedule_Days allObjects]];

หวังว่านี่จะช่วยคุณได้


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.