Cara mengembalikan NSMutableArray dari NSSet


104

Saya bisa memasukkan konten NSSetmenjadi NSMutableArrayseperti ini:

NSMutableArray *array = [set allObjects];

Kompilator mengeluh karena [set allObjects] mengembalikan NSArraybukan NSMutableArray. Bagaimana cara memperbaikinya?

Jawaban:


218

Sejak -allObjectsmengembalikan larik, Anda dapat membuat versi yang bisa berubah dengan:

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

Atau, sebagai alternatif, jika Anda ingin menangani kepemilikan objek:

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

7
Catatan: ada perbedaan yang halus dalam dua metode jika setini nil.
Zach Langley

-1

Saya menyelesaikan crash dengan menggunakan metode 'addObjectsFromArray' NSMutableArray untuk menetapkan semua objek NSSet ke NSMutableArray seperti:

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

Semoga ini bisa membantu Anda.


-3

Untuk penggunaan set yang teratur:

NSArray *myArray = [[myOrderedSet array] mutableCopy];

Tampaknya tidak ada - arraymetode NSSet .
Sophie Alpert
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.