OK. Я думаю, что вижу проблему. Всегда смотрите на сообщение об ошибке. Я думал, вы сказали, что используете NSMutableArrays в этой функции?
NSArray *theResults = [managedObjectContext executeFetchRequest:request error:&myError];
Измените это на
NSMutableArray *theResults = [[managedObjectContext executeFetchRequest:request error:&myError] mutableCopy];
Скажите мне, если это работает, и если это не так, я постараюсь помочь.
Дополнительная информация:
-exchangeObjectAtIndex:withObjectAtIndex:
- это метод для NSMutableArray. Вы использовали NSArray, это разные классы (NSMutableArray является подклассом (и добавляет методы, которые означают, что вы можете изменить его) NSArray).