Como retornar um NSMutableArray de um NSSet

104

Posso colocar o conteúdo de um NSSetem um NSMutableArraycomo este:

NSMutableArray *array = [set allObjects];

O compilador reclama, porém, porque [set allObjects] retorna um NSArraynão um NSMutableArray. Como isso deve ser corrigido?

ninja ninja
fonte

Respostas:

218

Como -allObjectsretorna uma matriz, você pode criar uma versão mutável com:

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

Ou, alternativamente, se você quiser lidar com a propriedade do objeto:

NSMutableArray *array = [[set allObjects] mutableCopy];
dreamlax
fonte
7
Nota: há uma diferença sutil nos dois métodos se setfor nil.
Zach Langley
-1

Resolvi a falha usando o método 'addObjectsFromArray' de NSMutableArray para atribuir todos os objetos NSSet a NSMutableArray como:

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

Espero que isso ajude você.

Irfan
fonte
-3

Para um conjunto encomendado, use:

NSArray *myArray = [[myOrderedSet array] mutableCopy];
Dustin
fonte
Não parece haver um - arraymétodo NSSet .
Sophie Alpert