Я хочу перетасовать/рандомизировать порядок элементов внутри моего NSMutableArray при выполнении метода reloadData. Я попробовал это ниже, но консоль продолжает бросать мне следующую ошибку:iOS - Shuffle/Randomized порядок объектов в NSMutableArray
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI exchangeObjectAtIndex:withObjectAtIndex:]: unrecognized selector sent to instance 0x1748b2c60'
Любая идея, почему это может быть? Я в тупике.
ViewController.h
@property (strong, retain) NSMutableArray *neighbourData;
ViewController.m
- (void)reloadData:(id)sender
{
NSMutableDictionary *viewParams = [NSMutableDictionary new];
[viewParams setValue:@"u000" forKey:@"view_name"];
[DIOSView viewGet:viewParams success:^(AFHTTPRequestOperation *operation, id responseObject) {
self.neighbourData = (NSMutableArray *)responseObject;
[self.tableView reloadData];
NSUInteger count = [self.neighbourData count];
for (NSUInteger i = 0; i < count; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = count - i;
int n = (arc4random() % nElements) + i;
[self.neighbourData exchangeObjectAtIndex:i withObjectAtIndex:n];
}
NSLog(@"This is the neighbourdata %@",self.neighbourData);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure: %@", [error localizedDescription]);
}];
Для ОП это важный момент для изучения. Приведение переменной в другой тип не изменяет тип базового объекта. Это просто заставляет компилятор * думать * это другой тип. Если объект ** не ** измененный массив, вам нужна функция (mutableCopy), которая берет неизменяемый массив в качестве параметра и возвращает вам новый измененный массив, содержащий одни и те же объекты. –