Search code examples
objective-ccocoa-touchnsmutablearraynsarraynsset

How to return an NSMutableArray from an NSSet


I'm able to put the contents of an NSSet into an NSMutableArray like this:

NSMutableArray *array = [set allObjects];

The compiler complains though because [set allObjects] returns an NSArray not an NSMutableArray. How should this be fixed?


Solution

  • Since -allObjects returns an array, you can create a mutable version with:

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

    Or, alternatively, if you want to handle the object ownership:

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