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?

node ninja
sumber

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];
dreamlax
sumber
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.

Irfan
sumber
-3

Untuk penggunaan set yang teratur:

NSArray *myArray = [[myOrderedSet array] mutableCopy];
Dustin
sumber
Tampaknya tidak ada - arraymetode NSSet .
Sophie Alpert