Вы можете перебрать массив книг и создать новый массив для авторов. Для каждой книги проверьте, находится ли этот автор уже в массиве авторов с помощью containsObject. Но тогда вам также придется беспокоиться о том, чтобы показывать книги этого автора только из массива книг, когда пользователь выбирает автора.
Вероятно, лучше всего сначала загрузить XML-файл в NSMutableDictionary, где ключами являются имена авторов, а объектом для каждого ключа является NSMutableArray книг этого автора.
Тогда автор таблицы будет использовать ключи словаря в качестве источника данных (используя массив, возвращаемый allKeys, который затем можно будет отсортировать, если необходимо, или использовать keysSortedByValueUsingSelector), а таблица книг будет использовать массив книг выбранного ключа.
Если данные становятся слишком большими для одновременной загрузки в память, вам придется использовать другие параметры, такие как SQLite.